我正在尝试以这种方式获取应用程序原始文件夹中文件的 URI:
Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.myfile);
或
Uri myUri = Uri.parse("android.resource://mypackage/raw/myfile");
然后我使用这个方法来检查 uri 是否正确:
File f = new File(myUri.toString());
if (f.exists()) {
Log.d("YES", "file exist");
}
if (!f.exists()){
Log.d("NO", "file doesn't exist");
}
但我总是得到:“不,文件不存在”。
你知道为什么吗?
最佳答案
首先,因为没有文件。资源是您的开发人员计算机上的文件。它们不是设备上的文件。
第二,因为 new File(myUri.toString())
永远不会工作。 Uri
总是有一个方案;文件系统路径从来没有方案。
第三,因为即使您使用 new File(myUri.getPath())
,它最多也适用于 file://
Uri
。还有许多其他类型的 Uri
方案;它们都不具有直接映射到文件系统路径的路径。即使使用 file://
Uri
,文件系统路径也可能不是您可以直接访问的路径(例如,Android 4.4+ 上可移动媒体上的任意路径) .
关于android - 检查 android raw 文件的 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32075295/