Android6.0以后 申请敏感权限两次的解决方法
2017-04-25 12:46
363 查看
Android6.0之前, app在安装时会提示用户此app需要使用哪些权限,但用户只能选择同意或拒绝安装,而不能单独对某项权限进行授予或拒绝。Android的这套权限机制并没有真正的起到权限管理和保护信息的作用。所以从Android6.0开始,Android引入了新的权限管理机制,当用户选择了拒绝某敏感项权限时,应用将无法执行需要对应权限的api
(Android权限机制在此)
故而对于6.0这种情况,很多app就会在开发时,设定
应用在安装后打开就提示用户所需的权限时,用户若是选择了拒绝,则退出当前app 。
那么问题来了,有时候部分涉及敏感权限的框架和功能(比如极光)在初始化“过早”的时候 会造成 提示用户所需的相同的权限 两次,这是因为 用户在还没有同意相关权限的时候,(极光)在初始化的时候就已经调用了对应了敏感权限的api,所以会调用两遍,将其初始化放在用户同意权限之后就ok了
(Android权限机制在此)
故而对于6.0这种情况,很多app就会在开发时,设定
应用在安装后打开就提示用户所需的权限时,用户若是选择了拒绝,则退出当前app 。
那么问题来了,有时候部分涉及敏感权限的框架和功能(比如极光)在初始化“过早”的时候 会造成 提示用户所需的相同的权限 两次,这是因为 用户在还没有同意相关权限的时候,(极光)在初始化的时候就已经调用了对应了敏感权限的api,所以会调用两遍,将其初始化放在用户同意权限之后就ok了
/** * 检查运行时权限 * * 2017-03-27 */ private void checkPermissions() { if (!SPUtils.getBoolean(Constant.SP_PERMISSION, false)) { PermissionUtil.getInstance() .reqPermissions(instance, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, new PermissionUtil.OnReqPermissionListener() { @Override public void onUserCancel() { savePermissionsStatus(false); } @Override public void onSuccess() { if(null != MainActivity.handlerHolder){ MainActivity.handlerHolder.sendEmptyMessage(Constant.MSG_WHAT_LOAD_INDEX); } savePermissionsStatus(true); JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志 JPushInterface.init(getApplicationContext()); } @Override public void onFailed(String[] strings, String[] strings1) { savePermissionsStatus(false); } @Override public void onAlreadyDenied(String[] strings) { savePermissionsStatus(false); } }); } }
相关文章推荐
- Android6.0动态权限解决方法
- Android6.0系统悬浮窗权限的问题解决方法
- android6.0权限动态申请框架permissiondispatcher的方法
- android6.0敏感权限动态申请
- android6.0以后删除HttpClient的解决方法
- 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法
- Page_Load执行两次的解决方法
- "您不具备调试此应用程序的权限......" 错误的解决方法
- (转)对路径"xxxxx"的访问被拒绝(文件操作权限)的解决方法
- 论坛中,用户权限解决方法
- mysql 由于权限问题远程不能连接,解决方法
- 关于serv-u公网访问出现“打开ftp服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:操作超时”的解决方法
- 对路径"xxxxx"的访问被拒绝(文件操作权限)的解决方法
- mysql 用户有权限 却不能远程连接的错误解决方法?
- IIS出现server application error+没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”访问权限解决方法
- 在原有VS2005基础上安2008测试版本2以后出现:配置节错误:web.config/protocols 解决方法。
- Asp.net中操作Excel的权限解决方法
- gSoap接口函数参数名敏感的解决方法
- 关于“计算机无法访问,您可能没有权限使用网络资源....”的解决方法
- “无法在Web服务器上启动调试.你不具备调试此程序的权限,此项目的URL位于Internet区域”的解决方法