Я просмотрел все ответы на StackOverflow, и для меня нет ответа.
Та же ошибка для реального устройства и эмуляторов.
Fileprovider всегда выдает исключение IllegalArgumentException
Есть манифест
<application
...
<provider
android:name = "android.support.v4.content.FileProvider"
android:grantUriPermissions = "true"
android:exported = "false"
android:authorities = "${applicationId}">
<meta-data
android:name = "android.support.FILE_PROVIDER_PATHS"
android:resource = "@xml/filepath"/>
</provider>
</application>
Есть файл path.xml
<paths>
<files-path
name = "logs"
path = "logs/" /></paths>
И есть код, который всегда выдает исключение
final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
File file = new File(logger.getFileName());
Uri uri = null;
try {
uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID, file);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
logger.getFileName() - возвращает реальное имя файла, например: "logs_22032019.txt"
Что я уже пробовал: Изменения в манифесте, такие как: android:authorities="com.realname.of.package" Изменения в файле path.xml
name = "logs"
1) то же имя файла 2) просто /
путь = "журналы/"
1) . 2) / 3) полный путь 4) файлы 5) /файлы 6) файлы/ например
Что я заметил - там действительно путь к файлам:
/data/user/0/com.app.realname/files/log.txt
Но FileProvider в нем идет к:
"log.txt" -> "/data/data/com.app.realname/files/log.txt"-->
ПРИМЕЧАНИЕ: Мне нужна только ВНУТРЕННЯЯ память.
logger.getFileName() - returns real file name for example: "logs_22032019.txt"
Это неверный путь к файловой системе. Это допустимое имя файла, но оно не говорит, где этот файл должен находиться на устройстве.
Это ваша конфигурация FileProvider:
<files-path
name = "logs"
path = "logs/" />
Для этого подойдет File:
File file = new File(getFilesDir(), "logs/"+logger.getFileName());
there is really the path of files... But FileProvider in it goes to
Это одно и то же расположение файловой системы для пользователя основного устройства.