对于手机内部存储器中存在的文件,路径为/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。我已检查该文件是否存在。坚持了很久,请帮忙。感谢。
答案 0 :(得分:1)
我可以看到你正在解析路径
的硬编码字符串Uri filename = Uri.parse("file:///system/data/recf/pic.jpg");
你正在传递三重前进的文件。这可能是问题所在。 首先,您需要确保路径正确。您可以使用文件对象来验证实际上是否存在提供路径的文件。您可以使用以下代码进行检查。
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
}
最有可能这个问题属于路径。希望我的回答可以帮到你。
答案 1 :(得分:1)
根据Android,设备的内部存储(手机存储)仍被视为外部存储。 "外部存储"可以指移动存储,如SD卡或不可移动的手机内部存储。
"内部存储"是指您的应用的私人空间,不与任何人共享,包括用户。
因此,需要允许读取和写入外部存储。在Android M +上,需要实时许可。