Xamarin Android FileProvider Java.Lang.IllegalArgumentException: не удалось найти настроенный корень, содержащий

Я использую Xamarin для создания приложений для Android. Я хочу открыть файл моего приложения в другом приложении (скажем, файл .docx в приложении Microsoft Word и т. д.). Я использую 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()
    {

    }

}

У меня также есть файл .xml с именем file_provider_path.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)

Можете ли вы помочь мне найти решение?


person mas_bejo    schedule 11.11.2019    source источник
comment
Элемент <files-path> указывает на внутреннее хранилище вашего приложения, но этот файл находится во внешнем хранилище. Вместо этого вы хотите <external-path>. Кроме того, обратите внимание, что прямой доступ к файловой системе был строго ограничен, начиная с Android Q, поэтому вам, вероятно, придется изменить способ его обработки.   -  person Mike M.    schedule 11.11.2019
comment
Спасибо @MikeM. которые решают мою проблему..   -  person mas_bejo    schedule 13.11.2019


Ответы (1)


Основываясь на комментарии Майка, я прочитал это https://developer.android.com/reference/android/support/v4/content/FileProvider#SpecifyFiles . И мне нужно установить «../» в качестве пути в file_provider_path.xml, потому что я не сохранил файл в папке с файлами.

person mas_bejo    schedule 13.11.2019