ファイルを共有するためのファイルプロバイダーをセットアップしようとしています。ファイルは外部ストレージの「AppName」フォルダー (Android、Movies、Pictures フォルダーと同じレベル) に保存されます。
ここに私のファイルプロバイダーの設定があります:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.mydomain.appname.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
および file_paths.xml :
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="mypath" path="AppName" />
</paths>
ファイルにアクセスしようとすると:
Uri fileUri = FileProvider.getUriForFile(activity, "com.mydomain.appname.fileprovider",
new File("/storage/emulated/0/AppName/IMG_20160419_095211.jpg"));
エラーが返されます: java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/AppName/IMG_20160419_095211.jpg at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:678) ) android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:377) で
Pictures や Movies などの組み込みディレクトリを使用していたときは、以前は正常に機能していましたが、file_paths.xml は次のように定義されていました。
<external-path name="photos" path="Pictures" />
<external-path name="videos" path="Movies" />
しかし、今は自分のファイルを自分のフォルダーに保存したいと考えています。FileProvider config で何か見逃しましたか?