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-path
,files-path
,external-path
和external-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
關於我在做什麼的任何想法是錯誤的?提前致謝!
我沒想過再次使用同一條線。事實是,第三方庫向我返回了你在我的問題中看到的'pathToFile',我想「爲什麼再次使用該行,我已經有一條路了!」,但路徑並不正確。 僅使用路線的文件名部分與您的線路一起工作。非常感謝! –