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 のドキュメントに問題があると思わせるいくつかのことがわかりました...
- https://code.google.com/p/android/issues/detail?id=61170
- @commonsWare の回答とコメントhttps://stackoverflow.com/a/30276915/921988
- https://github.com/commonsguy/cwac-provider#metadata-elementsのサポートを追加すると述べているこのアクティブなライブラリの README
external-files-dir
- また、私は
java.lang.IllegalArgumentException: Failed to find configured root that contains ...
今取得していますが、それは他の何かが原因である可能性があります.
そう
external-files-path
アプリの現在の動作に合わせたい場合は、使用する必要があると考えるのは正しいですか?- ドキュメント/FileProvider は本当に壊れている/間違っているのでしょうか?代わりにcwac-provider のようなものを使用する必要がありますか?
アップデート
完全を期すために、@CommonsWareが以下で推奨しているように、24.2.0バージョンを使用するとうまくいきsupport-v4
ます。