0

n個のAndroidアプリケーション間でファイルを共有する方法を誰か提案できますか? リンクやコードなどを教えてください。前もって感謝します !!

4

2 に答える 2

6

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 を参照してください。

于 2013-08-23T21:59:21.613 に答える
0

すべてのアプリケーションがファイル名を認識している必要があります。ファイルを SD カードまたは内部メモリに保存し、公開されていることを確認します。このトピックに関する Android デベロッパー サイトをご覧ください: http://developer.android.com/training/basics/data-storage/files.html

これが役立つことを願っています。

于 2013-08-23T19:07:49.753 に答える