Docs说:
要在外部存储上读取或写入文件,您的应用必须 获取READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE系统 权限。
我在我的应用清单中不使用READ_EXTERNAL_STORAGE
或WRITE_EXTERNAL_STORAGE
权限。但这很奇怪,因为这段代码运行成功:
File file = new File("/storage/sdcard0/ImageStore/Mat1.jpg");
FileInputStream fis = null;
byte[] buffer = null;
try {
fis = new FileInputStream(file);
buffer = new byte[1024];
fis.read(buffer );
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
为什么此代码在读取和写入权限被拒绝时无例外地运行?
注意:
如果未安装外部存储,安装错误或......,则显然会出现FileNotFoundException
答案 0 :(得分:4)
READ_EXTERNAL_STORAGE
在API级别16上引入,并在Api级别19(KITKAT)中强制执行。在此之前,没有特殊权限从外部存储读取,但只能写入其中。从文档
此权限从API级别19开始强制执行。在API级别之前 19,此权限未强制执行且所有应用程序仍可访问 从外部存储中读取。
答案 1 :(得分:0)
developer.android.com就READ_EXTERNAL_STORAGE权限
说明了这一点此权限从API级别19开始强制执行。在API级别19之前,不会强制执行此权限,并且所有应用程序仍然可以从外部存储中读取。