权限机制
Android的权限分为两类:
- 普通权限:不会威胁到安全和隐私的权限,系统会自动授权,普通权限需要在AndroidManifest.xml中声明即可
- 危险权限:触及用户隐私或设备安全性的权限,这部分权限必须用户手动点击授权,危险权限一般涉及地理位置,联系人信息,日程,短信,存储等。危险权限在使用时需要运行时权限处理
运行时申请权限
步骤如下:
一、判断用户是否已经给予权限
ContextCompat.checkSelfPermission() 两个参数:
- 参数一:
Context
- 参数二:权限名,比如拨打电话的权限名
Manifest.permission.CALL_PHONE
- 参数一:
- 将返回值和
PackageManger.PERMISSION_GRANTED
比较,相等则授权成功
二、若授权成功,则继续执行逻辑,若授权失败,需要申请授权
ActivityCompat.requestPermissions()
三个参数:- 参数一:
Activity
实例 - 参数二:
String
数组,把要申请的权限名写入数组 - 参数三:请求码,是个唯一值即可,与后面的
onRequestPermissionsResult()
回调方法一致
- 参数一:
三、申请授权后会回调到onRequestPermissionsResult()
方法,授权的结果封装在grantResults
参数里。
Demo code:
下面实现一个demo,申请打电话的权限 CALL_PHONE
,点击拨打电话按钮,弹出申请权限。
1 |
|