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

时间:2018-10-18 10:53:07

标签: android android-fileprovider

我正在按照本教程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>

1 个答案:

答案 0 :(得分:2)

  

我需要使用字符串资源

您不能在任意位置(例如FileProvider元数据中)使用字符串资源。

  

在使用构建类型使用gradle构建应用程序时,我希望使用不同的字符串

然后每种构建类型具有不同的xml资源,并且具有不同的FileProvider元数据。 IOW,替换整个文件,而不是文件中的字符串。