安卓开发自定义权限以及权限的级别

2018-01-12 11:18:50来源:网络收集作者:管理员人点击

分享

阿里云爆款

在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。如果应用需要执行某些操作,就需要声明使用这个操作对应的权限。 (在manifest文件中 添加标记)


android 系统提供了一系列这样的权限,具体可以查看android 权限,另外,android系统在新的版本中会增加一些permission,可以查看android 版本信息。


当然,app也可以自定义属于自己的permission 或属于开发者使用的同一个签名的permission。定义一个permission 就是在menifest文件中添加一个permission标签。


android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |"signature" | "signatureOrSystem"] />

1、下面对各参数做一个简单说明


android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
android:label: 对权限的一个简短描述
android:name :权限的唯一标识,一般都是使用 报名加权限名
android:permissionGroup: 权限所属权限组的名称
android:protectionLevel: 权限的等级(normal 、dangerous、signature、signatureOrSystem),
android:name 属性是必须的,其他的可选,未写的系统会指定默认值

2、protectionLevel权限等级的详细说明


(1)Normal
权限被声明为Normal级别,任何应用都可以申请,在安装应用时,不会直接提示给用户,点击全部才会展示。
(2)Dangerous
权限被声明为Dangerous级别,任何应用都可以申请,在安装应用时,会直接提示给用户。
(3)Signature
权限被声明为Signature级别,只有和该apk(定义了这个权限的apk)用相同的私钥签名的应用才可以申请该权限。


frameworks/base/core/res/AndroidManifest.xml声明的权限为Signature级别,那么只有Android官方使用相同私钥签名的应用才可以申请该权限。
(4)SignatureOrSystem
权限被声明为SignatureOrSystem级别,有两种应用可以申请该权限。
1)和该apk(定义了这个权限的apk)用相同的私钥签名的应用
2)在/system/app目录下的应用


3、举个例子
比如百度地图apk的AndroidManifest.xml里面声明了一个权限,
(1)、权限定义为Dangerous,那么任何其他应用都可以使用。
(2)、权限定义为Signature,那么只有使用同样私钥签名的apk,例如百度网盘,可以使用这个权限。
(3)、权限定义为SignatureOrSystem,那么使用同样私钥签名的apk,例如百度网盘,可以使用这个权限。在/system/app下的应用也可以使用这个权限。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台