1. Android 6.0之后,APP可以直接安装,运行时再询问用户授予相关权限,此时系统弹出一个对话框,(这个对话框不能由开发者定制)
同时用户也可以在手机的“设置”中对于某个App进行权限管理
注意:这个对话框不是系统自动弹出,而是开发者在调用必须用户授权的方法时,在调用之前检查(如果有授权直接调用)并请求用户权限,否则可能因没有授权而直接程序崩溃
重点:在某一个需要用户权限的地方检查并请求用户权限,否则程序崩溃
2. 权限分类
是否涉及用户隐私,权限分为两类:第一类不涉及隐私,在Manifest声明即可,比如蓝牙,网络,NFC等
第二类涉及隐私:SD卡读写,联系人,短信等
3. 权限组的概念
所有危险的Android系统权限属于权限组
4. 运行时不需要授权的权限:
第一类权限,不涉及用户隐私的权限,在Manifest声明即可;而且,安装及获得授权,用户不能取消,除非卸载。
5. 运行时需要授权的权限
条件:App运行在Android 6.0(API 23)或者更高级别的系统中,而且targetSdkVersion>=23, 系统将自动采用动态权限权利策略
注意事项:
(1)此类权限必须在Manifest中声明,从而申请时提示用户获得授权。否则,直接回调开发者权限而被拒绝
(2)申请某一个权限、系统弹出的Dialog是对于整个权限组的说明
(3)因为(2)所以,同一个权限组的某一个权限被授权,同组其他权限自动获得授权
6. 低于Android 6.0的系统,仍采用旧的权限管理策略:
(1)安装时请求用户授权相关权限
(2)获得权限组的授权,而不是某一个权限的授权
7. 资料储备
github:https://github.com/yanzhenjie/AndPermission
https://github.com/yanzhenjie/AndPermission/blob/master/README-CN.md
8. 待扩展:
动态权限管理策略:实践,demo