博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 6.0权限问题
阅读量:6249 次
发布时间:2019-06-22

本文共 1734 字,大约阅读时间需要 5 分钟。

Android 6.0 open failed: EACCES (Permission denied)

 

对于6.0+权限问题,报错如上:

 

解决方案:

Android 6.0 (Marshmallow). 添加新的权限模型,需要在运行时动态获取所需要的权限。

首先判断手机系统版本是否在6.0+然后才是支持运行时动态获取权限:

 

private boolean canMakeSmores(){    return(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1);}

 

然后是运行时获取权限的操作:

 

String[] perms = {
"android.permission.RECORD_AUDIO", "android.permission.CAMERA"};int permsRequestCode = 200; requestPermissions(perms, permsRequestCode);requestPermissions这个方法是Activity的方法,然后在onRequestPermissionResult里面拿到权限授予的回调结果:@Overridepublic void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){ switch(permsRequestCode){ case 200: boolean audioAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED; boolean cameraAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED; break; }}

 

 

下面这个方法可以获取用户是不是已经授予某些特殊的权限:

 

 

private boolean hasPermission(String permission){    if(canMakeSmores()){        return(checkSelfPermission(permission)==PackageManager.PERMISSION_GRANTED);    }    return true;}

 

如果用户已经授权过了这些权限,系统不会记住的,需要我们自己记住这些。

private boolean shouldWeAsk(String permission){    return (sharedPreferences.getBoolean(permission, true));}private void markAsAsked(String permission){    sharedPreferences.edit().putBoolean(permission, false).apply;}

 

 

同一个页面,可能多次需要某些权限,切记不要重复让用户授权

 

private ArrayList findUnAskedPermissions(ArrayList wanted){    ArrayList result = new ArrayList<~>();    for(String perm : wanted){        if(!hasPermission(perm) && shouldWeAsk(perm)){            result.add(perm);        }    }    return result;}

 

 

转自:http://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal

转载地址:http://umgia.baihongyu.com/

你可能感兴趣的文章
域控制器降级失败后删除数据的方法
查看>>
BZOJ2557[Poi2011]Programming Contest——匈牙利算法+模拟费用流
查看>>
程序员面试100题之12
查看>>
node.js+express+jade 国际化
查看>>
ssh 免密码登录
查看>>
php复制目录所有文件
查看>>
debian9安装pyenv管理python版本
查看>>
Zabbix图像集中展示Graphtrees开源
查看>>
字符串转数字
查看>>
知遇几何
查看>>
学习Linux计划书
查看>>
Android 调用系统播放器
查看>>
抵制代码重写
查看>>
javascript 实现图片的拖动效果
查看>>
linux的strace命令(详解)
查看>>
记一次环保宣传
查看>>
[转]Intel C++编译器的预定义宏(Windows版、Linux版)
查看>>
***测试02------查点总结
查看>>
1Z0-052 中英文解析(2)
查看>>
Android accessibility service detect notification
查看>>