我正在尝试设置一个文件提供程序来共享文件。我的文件保存在外部存储中的文件夹“AppName”中(与 Android、电影和图片文件夹相同级别)。
这是我的文件提供程序配置:
<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)
在我使用图片或电影等内置目录之前,它工作正常,我的 file_paths.xml 定义如下:
<external-path name="photos" path="Pictures" />
<external-path name="videos" path="Movies" />
但现在我想将我的文件存储在我自己的文件夹中。我错过了 FileProvider 配置的内容吗?