Android是一个权限分离的操作系统,每个应用以唯一的身份标识运行。系统的不同部分也分成不同的身份。因而Linux把应用之间以及应用与系统之间相互隔离起来。
Overview
宏观上介绍了权限相关联的知识点,整体内容如下所示:
(1)Permission approval
该部分主要从用户交互角度介绍了当前原声机上申请权限的交互形式。比如对话框显示怎样的内容等。
(2)Permissions for optional hardware feature
这部分主要讲手机硬件特征和与之相关的权限问题。比如手机没有相机时,是否允许安装需要申请相机权限的app等。
(3)Permission enforcement
这部分主要讲Permission在四大组件中的其它用法。Permission不仅仅只能用于请求系统功能,还可以通过自定义权限,来限制谁有权限启动/调用或访问指定的组件/数据等。Activity、Service、Broadcast Receiver和Content Provider这四大组件可以结合Permission这方面的功能,来防止被任意访问或修改。
(4)Automatic permission adjustments
这部分主要讲权限与版本前后兼容的问题。比如在高版本中才定义的新权限,在低版本中如何表现的问题等。
(5)Protection levels
App不同的操作,所可能产生的风险也是不一样的。比如获取当前的网络状态,最多也只会让App探测到周围的网络情况,而读写用户的通讯录则不同,用户的信息则有被篡改和道窃的风险。所以,根据可能产生的风险程度,系统将“权限”分为了不同的保护等级。对于第三方app而言,有三个等级,严重程度有轻到重依次为:普通权限(Normal Permission)、签名权限(Signature Permission)和危险权限(Dangerous Permission)。
1)普通权限
普通权限的覆盖区域为,app需要访问“沙盒”以外的数据以及资源的权限,这些对用户隐私和对其它app的操作产生的风险微乎其微。比如,修改系统时区、获取网络状态等。这部分还列出了一些常用的普通权限.
2)签名权限
系统会在安装app的时候授予该类权限,但是只有当这个试图使用这个权限的app和定义这个权限的app被相同的证书签名的时候,才能生效。有些签名权限就不用于第三方app的。该部分还列出了一些常见的可以供第三方app使用的签名权限。
3)危险权限
危险权限覆盖了如下情形,当用户需要的数据和资源涉及到用户隐私信息,或者可能影响到用户的存储数据或其它app的操作,比如读取用户的联系人的能力就是一个危险权限。该部分还列出了一些常见的危险权限。
4)特殊权限
除了上述的3中主要的权限分类外,还有两个特殊的权限:SYSTEM_ALART_WINDOW和WRITE_SETTINGS。
(6)Permission groups
该部分介绍了权限组相关的知识点。
(7)View an app`s permissions
该部分介绍了两个adb命令 ,一个用于查看app的权限申请情况,另外一个用于给app授予所有的权限。