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资料也很多了,可以自己搜索。
    原文作者:Crayfish
    原文地址: https://www.jianshu.com/p/45ac798d5dfc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞