Android6.0权限管理

一、运行时权限

新系统区别于旧系统对待权限上面更加地考虑用户。旧系统的权限仅在安装时候询问一次,而在6.0中,app不得不在运行时一个一个询问用户授予权限。然后有两个很坑爹的事情,需要开发者在开发app的逻辑上面有所转变。一、权限询问对话框需要开发者自己调用;二、用户可以拒绝权限,并且随时可以在设置中取消已经授权的权限(这样很容易导致崩溃)。
如果低于6.0的系统,用户取消app需要的权限,将不会抛出异常,但是app将啥都不干,导致函数返回值为null或者是0...额所以还是有可能崩溃。

二、几类权限的比较

1、PROTECTION_NORMAL类权限。
     这类权限只在安装时候要求用户授权,一旦授权就不可以取消。因此这类依旧在AndroidMainfest里面声明。

2、新运行时权限。
    版本compileSdkVersion和targetSdkVersion为23。
    写方法去检查你要的权限是否还是被授予,如果没有,则弹框请求用户授予。记得要去处理用户拒绝授权的情况。目前这类权限还不多,分为9大组
  • CALENDAR,读写日历
  • CAMERA,相机
  • CONTACTS,读写通讯录
  • LOCATION,定位
  • MICROPHONE,录音机
  • PHONE,通话相关
  • SENSORS,传感器
  • SMS,短信
  • STORAGE,存储
     因此用过iOS的用户会越觉得发现这个跟iOS的权限系统是非常类似的。不过android的程序员要辛苦了!
     这里还需要知道的是,同一个组的任何一个权限被授权了,其他权限也被自动授权。

3、如何写代码?
    Activity中有个方法,checkSelfPermission(你需要确认的权限),返回值是int类型,如果不等于PackageManager.PERMISSION_GRANTED,则需要调用shouldShowRequestPermissionRationale方法。返回false,表示用户不希望提醒授权请求,在这里可以去建议用户授权。返回true,可以直接调用requestPermissions方法去获取权限。请求权限后,会回调onRequestPermissionsResult方法,通过参数通知请求的结果。

三、用兼容库使代码兼容旧版

使用v4兼容库。
  • ContextCompat.checkSelfPermisson(),返回PERMISSION_GRANTED表示授权,返回PERMISSION_DENIED表示拒绝
  • ActivityCompat.requestPermissions(),请求权限
  • ActivityCompat.shouldShowRequestPermissionRationale(),在M版本之前调用永远返回false
四、最后几点建议
  • 着手准备重构
  • 判断清楚权限没有授权导致的情形并做相应的处理
  • 如果工程代码还没准备好,请不要设置targetSdkVersion为23
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值