n個のAndroidアプリケーション間でファイルを共有する方法を誰か提案できますか? リンクやコードなどを教えてください。前もって感謝します !!
2 に答える
android.support.v4.content.FileProvider を見てください。このコンポーネントは、コンテンツ URIを使用して、あるアプリからシステム内の他のアプリにファイルを共有できます。これにより、ホスティング アプリは URI (ファイルだけでなく) のアクセス許可を使用してファイルを制御できます。これは、ホスティング アプリが、ファイルのアクセス許可を永続的に変更する代わりに、一時的なアクセス許可を設定できることを意味します。パフォーマンスが低下することはないため、アプリがファイルを必要とするたびに、コンテンツ URI と一時的なアクセス許可を取得できます。非常に安全です。
FileProvider は ContentProvider のサブクラスであり、ほぼ同じように機能します。
現在の参照ドキュメントは少しあいまいです。私は要約しようとします:
ホスティング アプリは、マニフェストでプロバイダーを宣言する必要があります。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities=authority
android:exported="false"
android:grantUriPermissions="true">
<meta-data>
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/some_name" />
</provider>
- "authority" は、作成する URI 機関です。
- some_name は、プロジェクト (通常は
xml/
サブディレクトリ.
の内容はsome_name.xml
、
<paths>
<files-path name="path-segment" path="filepath"/>
...
</paths
ファイルパス
プライベート ファイル領域 (Context.getFilesDir() によって返される値) でファイルを共有しますが、外部領域とキャッシュ領域でファイルを共有することもできます。
filepath
は、プライベート ファイル領域のサブディレクトリです。たとえば、images/
. path-segment
コンテンツ URI に入る対応するパスです。たとえば、次の権限を使用する場合
com.example.myapp.fileprovider
入れて
<files-path name="images" path="images/">
結果のコンテンツ URI は
content://com.example.myapp.fileprovider/images
ファイル images/myimage.jpg を共有する場合、結果のコンテンツ URI は次のようになります。
content://com.example.myapp.fileprovider/images/myimage.jpg
ホスティング アプリは、`FileProvider.getUriForFile() を呼び出してコンテンツ URI を生成します。
すばらしいのは、FileProvider のサブクラスをコードで実装する必要がないことです。ほとんどのユーザーのニーズには、デフォルトの動作で十分です。
詳細については、javadoc を参照してください。
すべてのアプリケーションがファイル名を認識している必要があります。ファイルを SD カードまたは内部メモリに保存し、公開されていることを確認します。このトピックに関する Android デベロッパー サイトをご覧ください: http://developer.android.com/training/basics/data-storage/files.html
これが役立つことを願っています。