Я использую 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.