Android 6.0运行时权限惹的祸

最近在开发手机图片上传的功能时,使用的华为mate8手机进行测试,总会是出现读取不了资源或者写不了资源的错误,如下:

java.io.FileNotFoundException: /storage/emulated/0/Pictures/Screenshots/Screenshot_2016-08-17-11-46-53.png: open failed: EACCES (Permission denied)

在清单文件里添加了关于文件的读写权限,依旧是返回null,好无奈的赶脚。最终换了台小米5测试,发现没有出现这个错误。然后看了下系统,才想起来我的那台华为mate8是Android 6.0 的。MD,浪费了好多时间,最终找了关于6.0的运行时权限看了下,解决了问题,在此记录下,以免再犯。
在你需要的地方去检测权限,代码如下:

private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {      
      Manifest.permission.READ_EXTERNAL_STORAGE,   
      Manifest.permission.WRITE_EXTERNAL_STORAGE };
    /** *  Android 运行时权限 */
private void checkPermission() {   
     int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);  
     if (permission != PackageManager.PERMISSION_GRANTED) {    
          ActivityCompat.requestPermissions( this,PERMISSIONS_STORAGE,//需要请求的所有权限,这是个数组String[]                
          REQUEST_EXTERNAL_STORAGE//请求码       
 );    }}

你可能感兴趣的:(Android 6.0运行时权限惹的祸)