2016-11-12 75 views
3

我在應用程序中使用FileProvider時,我從應用程序拍攝照片時存儲在那裏。還有我的應用程序有不同的應用程序ID用於調試和發佈版本如何爲具有動態應用程序的應用程序指定路徑外部路徑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 

我如何定義文件提供程序路徑中的相對路徑?

回答

6

爲您的特定情況下,更換:

<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。

+0

同樣的錯誤。在試用錯誤後,我得到這個工作,用'替換路徑'。' – rkmax

+0

@rkmax:對於你的問題中的特定文件,這不應該是必要的AFAIK。可能還有其他文件正在服務,而不是在'Pictures /'中,對於這些文件您需要'.'作爲路徑。 – CommonsWare

+0

我也試過用'./ Pictures'沒有成功 – rkmax