我已使用以下res/xml/file_paths.xml
设置了一个FileProvider:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="suggestions" path="Android/data/com.example.app.dev/files/suggestions" />
</paths>
问题是,我有很多产品风格可以改变applicationId
。有没有办法用适当的applicationId替换该值而不为每个产品风格创建文件路径?就像更换像Android/data/{appId}/files/suggestions
这样的标签一样?甚至使用相对路径......(我已经尝试了所有东西,但只有这条完整的路径才有效)。
答案 0 :(得分:14)
我设法通过使用Gradle在build.gradle文件中动态创建字符串资源值来表示文件路径来解决此问题:
defaultConfig {
applicationId "com.example.myapp"
...
resValue 'string', 'images_file_path', "Android/data/" + applicationId + "/files/Pictures"
}
然后,您可以在res/xml/file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" android:path="@string/images_file_path" />
</paths>
答案 1 :(得分:12)
您根本不需要在file_paths.xml
中使用applicationId。只需将external_path
子句替换为:
<external-files-path name="my_images" path="Pictures" />
这将需要24.0.0或更高版本的支持库。