Android 无法使用ContentResolver.openInputStream(Uri)读取文件

Android 无法使用ContentResolver.openInputStream(Uri)读取文件,android,uri,inputstream,android-contentresolver,Android,Uri,Inputstream,Android Contentresolver,对于手机内部存储器中的现有文件,其路径为/system/data/recf/pic.jpg,使用openInputStream()方法构建inputStream会引发FileNotFoundException 这就是我正在做的- ContentResolver cr = context.getContentResolver(); InputStream inputStream = null; Uri filename = Uri.parse("file:///system/data/recf/p

对于手机内部存储器中的现有文件,其路径为/system/data/recf/pic.jpg,使用openInputStream()方法构建inputStream会引发FileNotFoundException

这就是我正在做的-

ContentResolver cr = context.getContentResolver();
InputStream inputStream = null;
Uri filename = Uri.parse("file:///system/data/recf/pic.jpg");
inputStream = cr.openInputStream(filename);

但它抛出了一个FileNotFoundException。我已检查该文件是否存在。困了很长时间,请帮忙。谢谢。

我可以看到您正在解析路径的硬编码字符串

Uri filename = Uri.parse("file:///system/data/recf/pic.jpg");
您正在使用三重正斜杠传递文件。这可能就是问题所在。 首先,您需要确保路径正确。您可以为此使用file对象来验证是否存在具有提供路径的文件。您可以使用以下代码进行检查

File file  = new File("Your path");
if(file.exists()) {
   // if this is true that means file exists in actual then
   //make uri and get the stream as you are already doing
}

这个问题很可能属于路径问题。希望我的答案对您有所帮助。

我可以看到您正在解析路径的硬编码字符串

Uri filename = Uri.parse("file:///system/data/recf/pic.jpg");
您正在使用三重正斜杠传递文件。这可能就是问题所在。 首先,您需要确保路径正确。您可以为此使用file对象来验证是否存在具有提供路径的文件。您可以使用以下代码进行检查

File file  = new File("Your path");
if(file.exists()) {
   // if this is true that means file exists in actual then
   //make uri and get the stream as you are already doing
}
这个问题很可能属于路径问题。希望我的回答能对您有所帮助。

设备的内部存储(手机存储)在Android中仍然被视为外部存储。“外部存储器”可指可移动存储器,如SD卡或手机的不可移动内部存储器

“内部存储”是指应用程序的私人空间,不与任何人(包括用户)共享

因此,需要外部存储器的读写权限。在Android M+上,需要实时许可。

设备的内部存储(电话存储)在Android中仍然被视为外部存储。“外部存储器”可指可移动存储器,如SD卡或手机的不可移动内部存储器

“内部存储”是指应用程序的私人空间,不与任何人(包括用户)共享


因此,需要外部存储器的读写权限。在Android M+上,需要实时权限。

您测试的操作系统版本是什么?。检查FileProvider docsOS版本是否为android 6.0.1。它显示的错误消息是-java.io.FileNotFoundException:/system/data/recf/pic.jpg:open失败:enoint(没有这样的文件或目录)读取。您测试的操作系统版本是什么?。检查FileProvider docsOS版本是否为android 6.0.1。它显示的错误消息是-java.io.FileNotFoundException:/system/data/recf/pic.jpg:open failed:enoint(没有这样的文件或目录)读取。