Android 运行时权限浅谈

关于Android 运行时权限

Android 开发常常遇到的一个问题就是在Android APP 安装的过程中,会向户请求一大堆权限,不同意不会让你安装,当然我是从来不会看的直接安装,我相信你也是,所以不知不觉中,也许有些敏感权限就这样被授予了,(比如我突然收到某个从未注册的平台的推广短信),为了 解决这个问题 Android M 推出了运行时权限,敏感权限在真正使用的时候会想用户提示,用户的安全性和隐私得到保护,仅仅需要做一些适配工作,今天这里我们来解决两个问题 :

  • 运行时权限有啥变化
  • 我们应该怎么样去适配运行时权限

首先我们看看官网上对6.0 权限变化的解释:

  • 如果设备运行的是 Android 6.0(API 级别 23)或更高版本,并且应用的 targetSdkVersion 是 23 或更高版本,则应用在运行时向用户请求权限。用户可随时调用权限,因此应用在每次运行时均需检查自身是否具备所需的权限。
  • 如果设备运行的是 Android 5.1(API 级别 22)或更低版本,并且应用的 targetSdkVersion 是 22 或更低版本,则系统会在用户安装应用时要求用户授予权限。如果将新权限添加到更新的应用版本,系统会在用户更新应用时要求授予该权限。用户一旦安装应用,他们撤销权限的唯一方式是卸载应用。

谷歌将新的权限分为两类,一类是正常权限,比如联网,震动一类的,这类权限跟之前一样,清单文件声明后直接授予,另一类,是危险权限,譬如:读取联系人、相机、定位等涉及用户隐私的,需要在使用时通知用户进行授权,危险权限如下:
这里写图片描述
这些权限被分为一组一组的,对于分组谷歌是这样解释的。

  • 如果应用请求其清单中列出的危险权限,而应用目前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述应用要访问的权限组。对话框不描述该组内的具体权限。例如,如果应用请求 READ_CONTACTS 权限,系统对话框只说明该应用需要访问设备的联系信息。如果用户批准,系统将向应用授予其请求的权限。*
  • 如果应用请求其清单中列出的危险权限,而应用在同一权限组中已有另一项危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。例如,如果某应用已经请求并且被授予了 READ_CONTACTS 权限,然后它又请求 WRITE_CONTACTS,系统将立即授予该权限

后面的demo验证上面的描述。实测下来,部分定制手机会对权限分组进行修改(比如,1加手机中 READ_PHONE_STATE,为正常权限,在手机清单文件中直接声明便可使用),所以尽量不要依赖权限组,我们在需要使用权限的时候单个请求即可。

#####大致流程:

Created with Raphaël 2.2.0 检查权限 已授予? 操作 请求权限? yes no
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值