找不到包含的已配置根目录
Failed to find configured root that contains
很抱歉问了一个过于重复的问题,但是 Whosebug 上的任何答案都对我很有帮助。
我想使用 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.getFilesDir()
、Environment.getExternalStorageDirectory()
和 context.getExternalFilesDir("")
)
,而不是 context.getCacheDir()
最后,我想取回我的文件:
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
知道我做错了什么吗?提前致谢!
I want to retrieve my file:
None 是文件的有效路径。
您已经拥有为文件提供有效路径的代码:
File outputFile = new File(getMyDirectory(), filename + ".mp4");
所以,使用您已经编写的代码。
很抱歉问了一个过于重复的问题,但是 Whosebug 上的任何答案都对我很有帮助。
我想使用 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.getFilesDir()
、Environment.getExternalStorageDirectory()
和 context.getExternalFilesDir("")
)
context.getCacheDir()
最后,我想取回我的文件:
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
知道我做错了什么吗?提前致谢!
I want to retrieve my file:
None 是文件的有效路径。
您已经拥有为文件提供有效路径的代码:
File outputFile = new File(getMyDirectory(), filename + ".mp4");
所以,使用您已经编写的代码。