Подтвердить что ты не робот

Исключить опровержение аргументов

Я использую поставщик файлов для сохранения фотографии в данном месте назначения. Я получаю:

java.lang.IllegalArgumentException: отсутствующие метаданные android.support.FILE_PROVIDER_PATHS при попытке открыть активность для захвата изображения с камеры.

Мой файл manifest.xml:

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

Мой файл paths.xml:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="content" path="Android/data/com.my_package_name/files/" />
</paths>

и код Java:

File externalFilesDirectory = this.getExternalFilesDir(null);
File imageFile = File.createTempFile(
        imageFileName,
        ".jpg",
        externalFilesDirectory
);
Uri photoURI = FileProvider.getUriForFile(this, "com.example", imageFile);

Последняя строка дает исключение. Что мне здесь не хватает? Я следил за учебником с официального сайта разработки Android (https://developer.android.com/training/camera/photobasics.html)

4b9b3361

Ответ 1

Я нашел решение. Проблема заключалась в том, что мое имя пользователя не заканчивалось ".fileprovider". Фиксированный.

Ответ 2

Даже если у вас правильно установлены права доступа к appId и есть настройка FileProvider, в идеале вы должны удалить кеши, т.е. удалить папки .gradle и .idea или, возможно, сделать недействительными кеш и перезапустить, что позволит вам снова загрузить зависимости gradle и тогда это сработало для меня :) Надеюсь, что это может помочь кому-то