Android基础知识(十六):Android运行时权限

Android基础知识(十六):Android运行时权限

从Android6.0(API级别为23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限,可以让用户对应用的功能进行更多的控制
一、系统权限分类
系统权限分为两类:正常权限和危险权限:

  1. 正常权限:不涉及到用户敏感信息,应用只需要在AndroidManifest中声明,系统会自动授予相应的权限。
  2. 危险权限:能够访问用户的敏感信息,申请敏感权限的时候,不仅需要在AndroidManifest中声明,还需要在运行时申请,用户同意之后才能获取到该权限
    在这里插入图片描述

另外一种系统权限分类方法可以分为Install权限(安装时权限)和Runtime权限(运行时权限):

  1. Install权限:安装时权限,在安装app时,就赋予该app的权限,即安装后立即获取到的权限。normal和signature级别的权限都是安装时权限。系统自动决定权限的赋予。特别的,如果使用权限的app和声明权限的app的签名不一致,则系统拒绝赋予该signature权限。
  2. Runtime权限:运行时权限,能访问用户的敏感信息,在targetSdkVersion是22及以下,dangerous权限是安装时权限,否则dangerous权限是运行时权限。

二、权限组
Android将不同的权限进行分组管理,任何权限都会属于一个权限组,包括正常权限和危险权限。
一个权限组有一个权限申请成功,则默认该权限组所有权限申请成功,再次申请该组其他权限时,系统将立即授予该权限
以下为危险权限的9个分组,共24个权限。
在这里插入图片描述
在这里插入图片描述
特别注意:权限分组在将来的Android版本中可能发生变化,因此应用应当明确的请求需要的每项权限,即使用户已向应用授予该权限组中的其他权限,应用代码不应该依赖特定权限属于或不属于相同组的这种假设。

三、申请运行时权限

  1. 检查权限
    在应用需要使用危险权限的时候,每次都需要通过调用检查权限的方法ContextCompat.checkSelfPermission()。如下所示:
    在这里插入图片描述
    如果应用具有此权限,则返回PackageManagerPERMISSION_GRANTED,并且应用可以继续操作;否则返回PERMISSION_DENIED,且应用必须明确向用户要求权限
  2. 解释申请权限的原因
    为了帮助查找用户可能需要解释的情形,Android提供了一个实用程序方法,即shouldShowRequestPermissionRationale()。
    如果应用之前请求过此权限但用户拒绝了请求,该方法将返回true。如果用户在过去拒绝了权限请求,并且在权限请求系统对话框中选择了Don´t ask again选项,此方法返回false;如果设备规范禁止应用具有该权限,该方法也会返回false。
  3. 请求权限
    如果应用尚无所需的权限,则应用必须调用一个requestPermissions()方法,以请求适当的权限。应用将传递其所需的权限,以及制定用于识别该权限请求的整形请求代码。
    此方法异步运行:它会立即返回,并且在用户响应对话框之后,系统会使用结果调用应用的回调方法,将应用传递的相同请求代码传递到requestPermissions()。
    在这里插入图片描述
    在这里插入图片描述
  4. 处理权限请求响应
    当应用请求权限时,系统将向用户显示一个对话框。当用户响应时,系统将调用应用的onRequestPermissionsResult()方法,向其传递用户响应。
    在这里插入图片描述
    Ps:同时申请多个权限时,用户可能仅仅同意某个权限,在方法onRequestPermissionsResult()中要循环判断每个是否申请成功,然后进行后续操作。
    在这里插入图片描述

参考资料:Android在运行时请求权限(官方文档)
Android6.0运行时权限 总结 & 实践
Android运行时权限处理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值