2017-03-19 29 views
0

我很抱歉要問一個過分重複的問題,但在stackoverflow上的任何答案真的幫助了我。找不到配置的根,其中包含

我想使用FileProvider來訪問文件到自定義文件夾。我在清單報關,<application>標籤中:

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

然後,在provider_paths.xml

<paths> 
    <cache-path name="my_videos" path="MyFolderName/"/> 
</paths> 

(但我想,而不是cache-pathfiles-pathexternal-pathexternal-files-path

創建我的檔案是:

public static Uri getUriFromFile(File file, Context context) { 
    int flags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION; 
    Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file); 
    context.grantUriPermission(context.getPackageName(), uri, flags); 
    return uri; 
} 

public static File getMyDirectory() { 
    File root = new File(context.getCacheDir(), "MyFolderName"); 
    if(root.mkdir()) Log.e(Consts.TAG, "Directory created"); 
    return root; 
} 

... 

File outputFile = new File(getMyDirectory(), filename + ".mp4"); 
videoUri = getUriFromFile(outputFile, this); 

(和,而不是context.getCacheDir(),我試過context.getFilesDir()Environment.getExternalStorageDirectory()context.getExternalFilesDir("")

最後,我想找回我的文件:

String pathToFile = "/my_videos/filename.mp4"; 
Uri file = getUriFromFile(new File(pathToFile), context); 

試圖與路徑:

"/MyFolderName/filename.mp4" 
"content://my.package.name.provider/my_videos/filename.mp4" 
"content://my.package.name.provider/MyFolderName/filename.mp4" 

所有這些嘗試都給我帶來了這個錯誤:

Failed to find configured root that contains /my_videos/filename.mp4 

關於我在做什麼的任何想法是錯誤的?提前致謝!

回答

1

I want to retrieve my file:

這些都不是文件的有效路徑。

你已經擁有的代碼,讓你的文件的有效路徑:

File outputFile = new File(getMyDirectory(), filename + ".mp4"); 

所以,使用你已經寫的代碼。

+0

我沒想過再次使用同一條線。事實是,第三方庫向我返回了你在我的問題中看到的'pathToFile',我想「爲什麼再次使用該行,我已經有一條路了!」,但路徑並不正確。 僅使用路線的文件名部分與您的線路一起工作。非常感謝! –

相關問題