3

アクセス許可を制御しながら、あるアプリのプライベート ファイル (アプリの内部ストレージ内のファイル) を別のアプリと共有するのに FileProvider が役立つ理由を理解しています。

ドキュメントでは、外部ストレージ (SD カードなど) でファイルを共有するためにも使用する方法について説明しています。

<external-path name="name" path="path" />

それ以外の

<files-path name="name" path="path" />

( https://developer.android.com/reference/android/support/v4/content/FileProvider.html )

これのポイントは何ですか?これに FileProvider を使用する必要があるのはなぜですか? 他のアプリは既に外部ストレージにアクセスできるため、他のアプリが必要とするのは URI ではなくファイル パスだけです。私は何が欠けていますか?

4

2 に答える 2

4

他のアプリはすでに外部ストレージにアクセスできます

必ずしも。権限を保持していない場合、READ_EXTERNAL_STORAGE外部WRITE_EXTERNAL_STORAGEストレージにアクセスできません。

また、ある時点で、外部ストレージに対するより大きな制限が適用されたとしても(たとえば、Android Work イニシアチブによる「仕事」セクションと「自宅」セクション)、あるアプリの外部ストレージに対する見方が異なっていたとしても、私は驚かないでしょう。論理的に同じユーザーであっても、別のアプリの外部ストレージのビューよりも。ContentProvider次に、「仕事」アプリに適切なアクセス許可があったとしても、「ホーム」アプリがlikeを介してそれらを提供しない限り、「ホーム」アプリによって外部ストレージに置かれたファイルを表示できない場合がありますFileProvider

于 2014-10-13T18:55:28.213 に答える
2

Android 4.4 で行われた変更の 1 つは、ストレージ権限の変更に関連しています。

READ_EXTERNAL_STORAGEAndroid 4.4 で実行している場合、アプリに権限がない限り、アプリは外部ストレージの共有ファイルを読み取ることができません。つまり、によって返されたディレクトリ内のファイルは、getExternalStoragePublicDirectory()アクセス許可なしではアクセスできなくなります。

ただし、FileProvider を介してファイルを提供する場合、アプリはアクセス許可を取得できますが、他のアプリはファイルの場所を知る必要はありません。

于 2014-10-13T18:56:04.250 に答える