2016-11-12 4 views
3

私は、アプリからFileProviderを使用しています。デバッグとリリースビルドのためにも、私のアプリは、異なるアプリケーションIDを持っているどのように特定のパスへの動的なアプリケーションのexternal-pathへ

  • 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私はPicturesのようなものに変更しようとした場合

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

    のように定義されていますかfiles/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は必要ありません。あなたが ''ピクチャ/ 'ではなく、' '.'をパスとして必要とする、あなたが提供している他のファイルが存在する可能性があります。 – CommonsWare

    +0

    私は '。/ Pictures'でも成功していませんでした。 – rkmax

    関連する問題