权限分类
权限通常可分为普通权限和危险权限
权限组
1.系统根据权限用途又定义了权限组,每个权限都可属于一个权限组,每个权限组可以包含多个权限。例如联系人权限组,包含读取联系人、修改联系人和获取账户三个权限。
2.当动态申请一个权限时,之前未申请过该组内的任何权限,系统会弹出对话框提示用户是否接收权限
3.当用户授权某个权限组内任意一个权限后,若再申请该组内的权限时,系统会直接授权,不会再与用户有交互
动态申请权限的步骤
1.检查权限
如果有权限则返回PackageManager.PERMISSION_GRANTED (0),否则返回PackageManager.PERMISSION_DENIED (-1)
1 | //检查是否有这个权限 |
2.请求权限
当应用需要某个权限时,可以申请获取权限,这时会有弹出一个系统标准Dialog提示申请权限,此Diolog不能定制,用户同意或者拒绝后会通过方法onRequestPermissionsResult()返回结果。当用户拒绝过此权限申请时,再次申请Dialog上可以勾选不再提示,这种情况下,以后再申请权限不会弹Dialog直接返回拒绝。所以一些依赖某些敏感权限的应用,需要自己去处理,向用户解释 为什么需要此权限,说服用户授予权限。请求权限代码如下:
1 | //参数2是需要动态申请的String[],若需申请多个可在该数组中添加 |
3.处理权限请求响应
当用户处理权限请求后,系统会回调申请权限的Activity的onRequestPermissionsResult()方法,只需要覆盖此方法,就能获得返回结果
1 |
|