使用资源文件夹中的字符串时捕获照片 android 异常

capturing photo android exception when using string from resources folder

我正在学习本教程 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,替换整个文件,而不是文件中的字符串。