PythonでAndroidアプリ作成してみる #4 Android 権限とファイル探索
こんにちはRcatです。
前回はアプリのguiの作り込みを行いました。
今回から機能面に入っていきたいのですが、フォルダ選択をしていて気になったことがあります。
それがフォルダが表示されるのにそこにあるはずのファイルが出てこなかったことです。
どういうことか確認してみましょう。
本シリーズはこちら
現状
ファイルが表示されない
まず現状ですが、フォルダ選択をしようとした時に以下のような画面になっていました。
ぱっと見問題なさそうに見えるんですが、ここファイルがあるはずなんですね。それなのに何も表示されていないのがちょっと怪しいなと思いました。
調べて分かったこと
どうも、内部ストレージへのアクセス権はデフォルトで存在するみたいですが、ファイルが読み取れるかどうかは別問題のようです。
確かにいろんなアプリ入れる時にメディアへのアクセスを許可しますか?とか出てきますね。
というわけで、アプリの権限の追加を行ってどうなるか試してみたいと思います。
権限を追加する
権限の選択
アプリの権限については、下記を参考にそれっぽいものを探して入れてみます
今回追加するのは次の権限です。
※説明は公式ドキュメント引用
MANAGE_EXTERNAL_STORAGE
アプリケーションがスコープ指定されたストレージ内の外部ストレージに広範にアクセスできるようにします。ユーザーに代わってファイルを管理する必要がある少数のアプリで使用することを目的としています。
MANAGE_MEDIA
アプリケーションがユーザーの確認なしに、このデバイスまたは接続されているストレージ デバイス上のメディア ファイルを変更および削除できるようにします。この権限を有効にするには、 アプリケーションに READ_EXTERNAL_STORAGEまたはMANAGE_EXTERNAL_STORAGE権限がすでに付与されている必要があります。
READ_EXTERNAL_STORAGE
アプリケーションが外部ストレージから読み取ることを許可します。
WRITE_EXTERNAL_STORAGE
アプリケーションが外部ストレージに書き込むことを許可します。
設定ファイルを変更する
権限を書き込むファイルは"buildozer.spec"です。
このファイルの以下の行を変更します。
android.permissions = android.permission.MANAGE_EXTERNAL_STORAGE, android.permission.MANAGE_MEDIA, android.permission.READ_EXTERNAL_STORAGE, android.permission.WRITE_EXTERNAL_STORAGE
これで権限の設定が完了しました。早速アプリをインストールしてみましょう。
権限を付与する
アプリ情報から権限を付与
アプリを開いても特に何も聞かれず、ファイルが表示されなかったので直接操作します。
アプリの情報から権限を開きます。
今まで出ていなかった写真と動画音楽とオーディオという項目が増えていますので、これを許可に変更します。
動作確認
ファイルビューを確認
もう一度ファイルビューでファイルが表示されるのかどうか確認してみました。
以下のように今度は画像のデータが存在することが確認できました。
Pythonで検索できるか確認する
少し改造してバックアップボタンを押すと、一番最初に設定したフォルダの中身をglobで検索するようにしてみました。
結果はこんな感じ。まぁそうなりますよね。
正常にデータを検索することができているようです。
まとめ
今回は寄り道して、Androidの権限の方をやっていきました。
今までWindowsでは全く気にしてきませんでしたが、スマホだとこういうことも気をつけないといけないんですね。
何はともあれファイルを検索することができたので、ここからバックアップにつなげていきたいです。
それではまたお会いしましょう。