我在尝试使用FileProvider时遇到此异常:
Java.Lang.IllegalArgumentException: Unable to find configured root for content://com.abc/Android/data/com.abc/files/345345345.pdf Java.Lang.IllegalArgumentException
我想我的file_paths.xml使用错误的路径配置FileProvider。我的代码:
file_paths.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path path="." name="." />
<files-path path="com.abc/Android/data/com.abc/files/" name="files" />
</paths>
的AndroidManifest.xml
<application android:label="@string/AppName" android:icon="@drawable/ic_launcher">
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.abc" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
</application>
我应该在path
和name
file_paths.xml
中放置哪些值,以使用内容URI公开文件:content://com.abc/Android/data/com.abc/files/345345345.pdf
?
我创建URI的代码:
File newFile = new File (Application.Context.FilesDir.AbsolutePath, filename);
Android.Net.Uri androidContentUri = FileProvider.GetUriForFile (Application.Context, Application.Context.PackageName, newFile);
System.Uri systemContentUri = SystemUri (androidContentUri);
return systemContentUri;
答案 0 :(得分:0)
您的参赛作品:
<files-path path="com.abc/Android/data/com.abc/files/" name="files" />
应该成为:
<files-path path="files" name="files" />
在这种情况下, 路径表示应用内部存储区域的files/
子目录中的文件。
此应用程序私有子目录与返回的值相同:
Application.Context.FilesDir;
因此,您应用中的文件位置为:
var path = Path.Combine(Application.Context.FilesDir.AbsolutePath, "files");