問題タブ [document-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - DocumentsProvider は、ファイル ピッカーの起動に使用されるインテント データにどのようにアクセスできますか
カスタム DocumentsProvider を実装しています。標準の Android プロトコルを使用してファイル ピッカーにアクセスする場合、アプリケーションは関心のある複数の MIME タイプを提供し、ファイル ピッカーに次のように要求できます。
ファイル ピッカーが開くと、カスタム ドキュメント プロバイダーが表示されます。そのクラスで行う必要があるのは、アプリが上記の「putExtra」行に格納した MIME タイプのリストを検出できるようにすることです。これにより、ドキュメント プロバイダーの「queryChildDocuments」メソッドでカーソルを適切にロードできます。
DocumentsProvider 内からファイル ピッカーを起動するために使用されたインテント内のデータを取得するにはどうすればよいですか?
android - 独自のドキュメント プロバイダーをアプリ内でのみ提供することはできますか?
これは非常に短い答えであり、ドキュメントやインターネット上のどこにも答えが見つかりませんでした。
Android では、アプリは、他のアプリから選択されるように、ユーザーにそれらからファイルを選択することを提供できます。たとえば、Google フォト アプリでは、そこから写真ファイルを選択できます。これは、DocumentProviderを実装することによって行われます。
アプリのコンテンツをアプリ自体にのみ提供することは可能かどうかお尋ねしたいと思います。
これは、たとえば、アプリ自体にのみ関連する写真の選択を提供する場合に役立ちます。
android - ACTION_OPEN_DOCUMENT を EXTRA_INITIAL_URI および file:// Uri とともに使用する
DocumentsProvider にファイルの場所でナビゲーションを開始させるためIntent.ACTION_OPEN_DOCUMENT
に、 file:// 形式の Uri を追加で使用することは可能ですか?DocumentsContract.EXTRA_INITIAL_URI
私のアプリでは、カスタム設定ファイルを使用するオプションをユーザーに提供します。ユーザーがこのオプションを選択すると、アプリのデータ フォルダーにデフォルト ファイルの例が作成されます (によって返されますgetExternalFilesDir
)。
カスタムファイルを選択するとき、DocumentsProvider が現在選択されているファイルが置かれているフォルダーを を使用して開くようにしますEXTRA_INITIAL_URI
。ACTION_OPEN_DOCUMENT
返される Uri のcontent://
形式が正しいため、以前にインテントで選択されたファイルがある場合は問題ありません。
ユーザーが初めてファイルを選択する前に問題が発生し、作成された既定のカスタム ファイルへの URI しか利用できません。ファイルは によってFile.createNewFile
返されるディレクトリ内でを使用して作成され、Context.getExternalFilesDir
を使用して URI が生成されUri.fromFile(file)
、結果としてfile://
URI の形式になります。
簡単なコード例を次に示します。
カスタムファイルを作成しています。のような Uri を返しますfile:///storage/emulated/0/Android/data/com.example.testsapp/files/customFile.txt
ユーザーにカスタム ファイルを選択させる:
fileUri がfile://
フォーマットされている場合、DocumentsProvider はファイルのディレクトリで開かず、代わりにデフォルト ディレクトリを表示します。ユーザーが新しいカスタム ファイルを選択すると、onActivityResult
メソッドは次のような新しい Uri を提供します。content://com.android.externalstorage.documents/document/primary%3AAndroid%2Fdata%2Fcom.example.testsapp%2Ffiles%2FcustomFile.txt
この URI をpickNewFile
メソッドで使用すると、ファイルのディレクトリで開かれます。
file://
タイプ Uri をタイプ Uriに変換する方法はありcontent://
ますか?