Xamarin Android FileProvider Java.Lang.IllegalArgumentException:无法找到包含以下内容的已配置根

时间:2019-11-11 04:38:17

标签: android xamarin fileprovider

我使用Xamarin创建Android应用程序。我想在其他应用程序中打开我的应用程序的文件(比如说Microsoft Word应用程序中的.docx文件,等等)。 我使用FileProvider,但始终会收到此错误:

Exception:Java.Lang.IllegalArgumentException: Failed to find configured root that contains...

这是我的FileProvider文件:

[Android.App.MetaData("android.support.FILE_PROVIDER_PATHS", Resource = "@xml/file_provider_path")]
[Android.Content.ContentProvider(new System.String[] { "${applicationId}.fileProvider" }, Exported = false, GrantUriPermissions = true, Name = "Android.Support.V4.Content.FileProvider")]
public  class AppFileProvider : Android.Support.V4.Content.FileProvider
{
    public AppFileProvider()
    {

    }

}

我还有一个名为.file_provider_path.xml的.xml文件,其内容为:

<?xml version="1.0" encoding="UTF-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
  <files-path name="file_provider_path" path="/" />
</paths>

并使用以下文件获取uri:

Java.IO.File _file = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory, "document1.docx");
AppFileProvider.GetUriForFile(this.ApplicationContext, this.Application.ApplicationContext.PackageName + ".fileProvider", _file)

您能帮我找到解决方法吗?

1 个答案:

答案 0 :(得分:0)

根据Mike的评论,我读了https://developer.android.com/reference/android/support/v4/content/FileProvider#SpecifyFiles。 而且我需要在file_provider_path.xml中将“ ../”设置为我的路径,因为我没有将文件保存在文件夹中。