Android6.0运行时权限
一、Android6.0运行时权限
在Android系统的安全模型中,应用程序需要一些权限才能对其他应用程序或者系统进行访问(如获取联系人、获取访问网络的权限等),这些权限就是应用运行需要的Android权限。在Android6.0之前只需要在manifest中声明权限,应用被安装后这些权限就被授予了,并且不能撤销,但是在2015年谷歌推出6.0后在用户权限授予方面发生了很大的变化,或许觉得之前的默认授权方式不够合理,因此在Android6.0时,部分权限只有在用户需要授权的时候才去请求授权。相比Android6.0之前规则发生了很大的变化。这些权限就是运行时权限。
Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,又新增了运行时权限动态检测,以下权限都需要在运行时判断:
身体传感器
日历
摄像头
通讯录
地理位置
麦克风
电话
短信
存储空间
二、授权模型
Android6.0之前:
权限是一条龙服务的,用户安装完应用后,只要在manifest中声明的权限都会被系统默认授权,并且授权后无法撤销,这样带来的用户体验是非常不好的,有些权限是用户觉得不需要授予该应用的,比如收取通知的权限,由于主动权不在用户,用户一旦安装应用后就无法撤销这个授权,体验很差。
android6.0之后:
采用新的权限模型,只有在需要权限的时候,才告知用户是否授权,是在运行的时候授权,而不是在原来安装的时候授权,同时默认情况下每次在运行时打开的页面时候,需要先检查是否有所需要的权限申请。
三、权限流程
在api23中,权限满足的标准流程是: