1

file:/// Uri を別のアプリ (この場合はカメラ) に送信しようとする FileUriExposedException に遭遇しました。代わりに FileProvider を使用する必要があります (api 24 Nougat でクラッシュが発生します)。

このアプリでは、Context のgetExternalFilesDir(String)メソッドを使用してファイルを生成します。

context.getExternalFilesDir("attachments");

FileProviderのドキュメントは、機能を現在と同じにしたい場合はexternal-files-path、自分で使用する必要があると私に信じさせます。paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-files-path
        name="attachments"
        path="attachments/" />
</paths>

しかし、さらにグーグルで調べたところ、FileProvider、または少なくとも FileProvider のドキュメントに問題があると思わせるいくつかのことがわかりました...

そう

  1. external-files-pathアプリの現在の動作に合わせたい場合は、使用する必要があると考えるのは正しいですか?
  2. ドキュメント/FileProvider は本当に壊れている/間違っているのでしょうか?代わりにcwac-provider のようなものを使用する必要がありますか?

アップデート

完全を期すために、@CommonsWareが以下で推奨しているように、24.2.0バージョンを使用するとうまくいきsupport-v4ます。

4

2 に答える 2

2

アプリの現在の動作に合わせたい場合は、external-files-path を使用する必要があると考えるのは正しいですか?

はい。ただし、 はパラメーターとしてgetExternalFilesDir()正式にサポート"attachments"されていないことに注意してください。そのため、いつかアプリが壊れても驚かないでください。

ドキュメント/ファイルプロバイダーは本当に壊れている/間違っていますか

さて、新しいアーティファクトexternal-files-pathの 24.2.0 のソース JAR にサポート用のコードが表示されます。は、24.2.0 の時点で、一連の別個のアーティファクトに分割され、.support-core-utilssupport-v4FileProvidersupport-core-utils

したがって、 の 24.2.0 を使用してみてくださいsupport-v4(またはsupport-core-utilsのすべてが必要ない場合support-v4)。

于 2016-08-30T12:50:41.237 に答える
0

WRITE_EXTERNAL_STORAGEに許可を与えずに、プライベートファイルをカメラに共有して完全な品質の画像をアップロードするという同様のシナリオがありました.

を使用して動作させることができました次のように

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="my_images"
        path="Android/data/com.santhoshn.appprivateimageupload/files/Pictures" />
</paths>

これが実際のサンプルアプリですhttps://github.com/santbob/AppPrivateImageUpload

于 2016-10-13T04:37:39.453 に答える