如何使用动态applicationId

时间:2016-11-12 12:42:55

标签: android android-fileprovider

我在我的应用程序中使用FileProvider,当我从应用程序拍照时存储在那里。我的应用程序也有不同的应用程序ID用于调试和发布版本

  • com.rkmax.myapp
  • com.rkmax.myapp.debug

我已经像这样定义了我的文件提供程序

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

@string/authority_file_provider的值将变为:

  • com.rkmax.myapp.fileprovider
  • com.rkmax.myapp.debug.fileprovider

我的@xml/file_paths定义为

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path name="my_images" path="Android/data/com.rkmax.myapp/files/Pictures" />
</paths>

如果我尝试更改为Picturesfiles/Pictures我的应用失败

Failed to find configured root that contains/storage/emulated/0/Android/data/com.rkmax.myapp.debug/files/Pictures/20161112_073128-251269360.jpg

如何在文件提供程序路径中定义相对路径?

1 个答案:

答案 0 :(得分:9)

对于您的特定情况,请替换:

<external-path name="my_images" path="Android/data/com.rkmax.myapp/files/Pictures" />

使用:

<external-files-path name="my_images" path="Pictures" />

这将需要24.0.0或更高的支持库IIRC。