IllegalArgumentException: не удалось найти корень конфигурации, который содержится в FileProvider.getUriForFile - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь поделиться файлом из удаленного местоположения, но получаю следующее исключение:

java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/31AB-1310/Android/data/com.example.myapp/cache/EasyImage/a9c926ea-4dce-44b7-94e9-a5dca6b91a5d-450242437.jpg
    at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
    at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
    at pl.aprilapps.easyphotopicker.EasyImage.createCameraPictureFile(EasyImage.java:54)
    at pl.aprilapps.easyphotopicker.EasyImage.createChooserIntent(EasyImage.java:109)

Мой код FileProvider содержит следующую запись манифеста:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/file_provider_paths" />
</provider>

Мой файл res / xml / filpaths.xml:

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

Файл My Activity.java:

private void shareCurrentData(String filepath) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    ArrayList<Uri> files = new ArrayList<Uri>();
    if (intent.resolveActivity(getPackageManager()) != null) {
        try {
            File shareFile= new File(filepath);
            Uri shareUri =FileProvider.getUriForFile(this, AUTHORITY,shareFile);
            //files.add(textUri);
            files.add(shareUri);
        } catch (Exception ex) {
            System.out.println(ex);
        }
        intent.putExtra(Intent.EXTRA_STREAM, files);
        startActivity(Intent.createChooser(intent,"Share using....."));
    }
}

Я просто не могу понять, что вызывает исключение, потому что, кажется, все подходит.

1 Ответ

0 голосов
/ 02 апреля 2019
/storage/31AB-1310/Android/data/com.example.myapp/cache/EasyImage/a9c926ea-4dce-44b7-94e9-a5dca6b91a5d-450242437.jpg

Путь, подобный этому, обычно поступает из съемного хранилища.FileProvider не поддерживает съемное хранилище.

Итак, убедитесь, что filepath включено внешнее хранилище , а не съемное хранилище .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...