Android系统引入权限的目的是为了保护Android用户的隐私。Android安全架构设计中一个明确点,默认情况下App是没有权限对其他App、操作系统和用户进行有害的操作。这些有害操作包括读写用户的隐私数据(如通讯录、电子邮件等)、读写其它App的文件、调起硬件设备(如蓝牙、Wifi、相机等),访问网络等。App如果想要进行这些操作,就需要申请相应的权限,如下网址提供了Android系统定义的所有权限【Manifest.permission | Android Developers】,均以常量的形式供开发者使用,开发者可以通过Manifest.permission.X的方式调用。
1.1 权限的类别
由于基于Linux内核,Android系统中的权限分为以下3类。
(1)Android手机所有者权限
这个和厂商相关,可以理解为系统权限。
(2)Android ROOT权限
类似于Linux,这是Android系统中的最高权限。如果拥有该权限,就可以对Android系统中的任何文件、数据、资源进行任意操作。所谓“越狱”,就是令用户获得最高的ROOT权限。
(3)Android应用程序权限
该权限在AndroidManifest文件中由程序开发者声明,在程序安装时由用户授权,共有下述4类不同的权限保护级别(Protection Level)。
(1)Normal
风险较低的权限,任何应用都可以申请,在安装应用时,不会直接提示给用户,点击全部才会展示。
(2)Dangerous
风险较高的权限,任何应用都可以申请,安装时需要用户确认才能使用。
(3)Signature
仅当申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。
(4)SignatureOrSystem
仅当申请该权限的应用程序位于相同的Android系统镜像中,或申请该权限的应用程序与声明该权限的程序使用相同的签名时,才赋予该权限。
可以这样理解:
1)和该APK(定义了这个权限的APK)用相同的私钥签名的应用。
2)在/system/app目录下的应用。