Поставщик файлов: не удалось найти настроенный корень, содержащий

Я использую FileProvider для обмена мультимедиа с другими приложениями со следующим кодом:

 Intent shareIntentt = new Intent(Intent.ACTION_SEND);
        shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri = Fileprovider.getUriForFile(context, "com.app.tst", csOrignalFile);
        startActivity(Intent.createChooser(shareIntentt, getResources().getText(R.string.share)));

Вот мой провайдер под тегом <application> в манифесте:

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.app.tst"
        android:grantUriPermissions="true"
        android:exported="false">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>

и это file_paths.xml:

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

Расположение файла:

data / user / 0 / com.app.tst / app_Media / User / 2b5b73e511c0f40d07303487b9b43a7c4fe92516 / df1c010261115ccba4b6ae484aff79714cb23fd5.jpg

Я попробовал несколько ответов от SO и изменил path = "/" с несколькими вариантами, например Ошибка FileProvider Не удалось найти настроенный корень, который содержит /data/data/sawbodeployer.entm.illinois.edu ..., java.lang.IllegalArgumentException: не удалось найти настроенный корень, содержащий / storage / emulated / 0 / Pictures. Но каждый раз я получаю одну и ту же ошибку.

Процесс: com.app.tst, PID: 8261 java.lang.IllegalArgumentException: не удалось найти настроенный корень, который содержит /data/data/com.app.tst/app_Media/User/2b5b73e511c0f40d07303487b9b43a7c4fe9251661115aepp03c4fe925166111c8c8c8c8c8c8c8c8c8c8c8c8cddddddd7 .content.FileProvider $ SimplePathStrategy.getUriForFile (FileProvider.java:712)

Примечание. Я не писал собственного FileProvider.


person Syeda Zunaira    schedule 15.02.2018    source источник


Ответы (3)


Пытаться

<?xml version="1.0" encoding="utf-8"?>
<paths >
    <external-path
        name="share" path="/"/>

</paths>

вместо external-files-path

Изменить: - И вы еще не сделали shareIntent.setData(contentUri);, пожалуйста, установите данные тоже .. :)

person Santanu Sur    schedule 15.02.2018
comment
path="." тоже проверял? - person Santanu Sur; 15.02.2018
comment
все равно не повезло :( - person Syeda Zunaira; 15.02.2018
comment
О, спасибо, это поможет, когда мне удастся запустить Fileprovider.getUriForFile. - person Syeda Zunaira; 15.02.2018

установите path = "" вместо path = "/"

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="external_files" path=""/>
</paths>
person sasikumar    schedule 15.02.2018
comment
И если я запускаю его (игнорируя ошибку), у него все та же проблема. - person Syeda Zunaira; 15.02.2018
comment
твой путь верен? - person sasikumar; 15.02.2018
comment
это путь data / user / 0 / com.app.tst / app_Media / User / 2b5b73e511c0f40d07303487b9b43a7c4fe92516 / df1c010261115ccba4b6ae484aff79714cb23fd5.jpg и да, он действителен. Я создаю новый файл как «File csOrignalFile = new File (data / user / 0 / com.app.tst / app_Media / User / 2b5b73e511c0f40d07303487b9b43a7c4fe92516 / df1c010261115ccba4b6ae484affd79714cbpg);» - person Syeda Zunaira; 15.02.2018
comment
обратитесь к stackoverflow.com/questions/34248855/ - person sasikumar; 15.02.2018

<external-files-path name="external_files" path="/"/>

Изменить на

<files-path name="myfiles" path="."/>

И

data/user/0/com.app.tst/app_Media/User/2b5.....

Изменить на

/data/user/0/com.app.tst/files/app_Media/User/2b5b73e51.....
person greenapps    schedule 15.02.2018
comment
все та же проблема - person Syeda Zunaira; 15.02.2018
comment
??? Вы тогда переместили свои файлы в каталог .... / files / ...? Вы должны! - person greenapps; 15.02.2018
comment
Нет, я этого не сделал. Я не хочу перемещать свой файл в другой каталог - person Syeda Zunaira; 15.02.2018
comment
Тогда извините, вы не можете использовать класс FileProvider. Он не будет служить оттуда. - person greenapps; 15.02.2018
comment
Могу я спросить, почему?? - person Syeda Zunaira; 15.02.2018
comment
Это как его запрограммировано. FileProvider будет обслуживать только некоторые предопределенные пути. Просто прочтите страницу разработчиков. - person greenapps; 15.02.2018