从外部存储读取文件

时间:2015-07-04 08:24:32

标签: android readfile fileinputstream android-external-storage

Docs说:

  

要在外部存储上读取或写入文件,您的应用必须   获取READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE系统   权限。

我在我的应用清单中不使用READ_EXTERNAL_STORAGEWRITE_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

2 个答案:

答案 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之前,不会强制执行此权限,并且所有应用程序仍然可以从外部存储中读取。