定义自己的permission的时候要写明android:protectionLevel,这个属性有四个值。分别是:
normal:
这个用于比较低风险的权限,如果一个权限的android:protectionLevel设置为normal,当某个app申请这个权限时system会自动授予app权限,而不用询问用户。
dangerous:
用于高风险的权限,例如可能访问私人数据(例如短信,联系人),或者控制设备(使用摄像头,定位)。
当某个app申请使用这个权限是system可能会询问用户是否同意。(例如KK上打开权限管理时会有dialog提示用户)
signature:
如果申请权限的app和声明权限的app有相同的证书那么系统就自动授予这个app权限,不用询问用户。
signatureOrSystem:
包含上面的signature,另外如果是system image中自带的app申请这个权限,那么system也会自动授予它权限而不需要询问用户。
当然不管是申请什么级别的权限,在安装app时都会显示出来让用户看到。
另外这些级别似乎并不兼容低级别的权限,比如一个app向同一签名的app申请normal权限可能会失败。