3
Android 5.0(Lollipop)用に提示された新しいSDカードアクセスAPIの使用方法
バックグラウンド 上のAndroid 4.4(キットカット)、Googleがかなり制限されたSDカードにアクセスしてきました。 Android Lollipop(5.0)以降、デベロッパーは、このGoogleグループの投稿に記載されているように、特定のフォルダへのアクセスを許可することをユーザーに確認する新しいAPIを使用できます。 問題 この投稿では、2つのWebサイトにアクセスするように指示されています。 https://android.googlesource.com/platform/development/+/android-5.0.0_r2/samples/Vault/src/com/example/android/vault/VaultProvider.java#258 これは内部の例のように見えますが(おそらくAPIデモで後で示される可能性があります)、何が起こっているのかを理解するのは非常に困難です。 http://developer.android.com/reference/android/support/v4/provider/DocumentFile.html これは新しいAPIの公式ドキュメントですが、それを使用する方法についての十分な詳細は記載されていません。 これはあなたに言っていることです: ドキュメントのサブツリー全体への完全なアクセスが本当に必要な場合は、まずACTION_OPEN_DOCUMENT_TREEを起動して、ユーザーがディレクトリを選択できるようにします。次に、結果のgetData()をfromTreeUri(Context、Uri)に渡して、ユーザーが選択したツリーの操作を開始します。 DocumentFileインスタンスのツリーをナビゲートするときは、常にgetUri()を使用して、そのオブジェクトの基になるドキュメントを表すUriを取得したり、openInputStream(Uri)などで使用したりできます。 KITKAT以前を実行しているデバイスでコードを簡略化するには、DocumentsProviderの動作をエミュレートするfromFile(File)を使用できます。 質問 新しいAPIについていくつか質問があります。 実際にどのように使用しますか? 投稿によると、OSはアプリにファイル/フォルダーへのアクセス許可が与えられたことを記憶します。ファイル/フォルダにアクセスできるかどうかをどのように確認しますか?アクセスできるファイル/フォルダのリストを返す関数はありますか? キットカットでこの問題をどのように処理しますか?サポートライブラリの一部ですか? OSに、どのアプリがどのファイル/フォルダーにアクセスできるかを示す設定画面はありますか? 同じデバイスに複数のユーザー向けにアプリをインストールするとどうなりますか? この新しいAPIに関する他のドキュメント/チュートリアルはありますか? 権限を取り消すことはできますか?もしそうなら、アプリに送信されているインテントはありますか? 選択したフォルダに対して再帰的にアクセス許可を要求しますか? アクセス許可を使用すると、ユーザーがユーザーの選択による複数の選択の機会をユーザーに与えることもできますか?それともアプリは、どのファイル/フォルダーを許可するかを具体的に伝える必要がありますか? エミュレータで新しいAPIを試す方法はありますか?つまり、SDカードパーティションがありますが、プライマリ外部ストレージとして機能するため、(単純なアクセス許可を使用して)そこへのすべてのアクセスが既に与えられています。 ユーザーがSDカードを別のカードに交換するとどうなりますか?