requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

报错日志:

java.lang.SecurityException: Permission Denial: 
reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=31688, uid=10146 
requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

看到这个报错日志第一个想到的就是缺少READ_EXTERNAL_STORAGE权限。
但是当你运行在android 6的手机上的时候,这个报错并不是缺少权限。
原因是:从6.0(api 23)开始, android采用了Runtime permission request, 即在运行时请求权限,而不是在编译的时候,即使在manifest.xml里面添加了权限也要在运行时请求。

接着,我们要寻找解决方法。
第一种,最简单的方法,你的targetSdkVersion不要超过22

android:targetSdkVersion="22"
```
 第二种,那就是采用Runtime permission request来动态申请权限,现在Runtime permission request资料也很多了,可以自己搜索。

你可能感兴趣的:(requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission())