Я следую этому руководству https://developer.android.com/training/camera/photobasics, чтобы сделать снимок
я добавил следующий файл в папку xml
<paths xmlns:android = "http://schemas.android.com/apk/res/android">
<external-path name = "my_images"
path = "Android/data/mypackage/files/Pictures" />
Захват изображения с использованием указанного выше файла работает идеально, как и ожидалось. но если я использовал ресурс @string, как показано ниже
<paths xmlns:android = "http://schemas.android.com/apk/res/android">
<external-path name = "my_images"
path = "@string/mypath" />
<string name = "mypath">Android/data/mypackage/files/Pictures</string>
я получаю следующее исключение
Failed to find configured root that contains /storage/emulated/0/Android/data/mypackage/files/Pictures/IMG_20181018_134824_5769070663217749604.jpg
он отлично работает, если я не использую ресурс @string, мне нужно использовать строковые ресурсы, так как я хочу иметь другую строку при создании приложения с помощью gradle с использованием типов сборки
РЕДАКТИРОВАТЬ поставщик файлов в файле манифеста
<provider
android:name = "android.support.v4.content.FileProvider"
android:authorities = "${applicationId}.provider"
android:exported = "false"
android:grantUriPermissions = "true">
<meta-data
android:name = "android.support.FILE_PROVIDER_PATHS"
android:resource = "@string/mypath">
</meta-data>
</provider>
i need to use with string resources
Вы не можете использовать строковые ресурсы в произвольных местах, например в метаданных FileProvider.
i want to have different string when building app with gradle using build types
Затем используйте разные ресурсы xml для каждого типа сборки с разными метаданными FileProvider. IOW, замените весь файл, а не строку внутри файла.
как добавить путь к xml в строковых ресурсах <string name = "mypath"> @ xml / file_paths </string>
Я добавил manifestPlaceholder в градиент, например: manifestPlaceholder = [filepath: "@ xml / file_paths"], и это сработало .thx
можешь привести пример