转:http://blog.163.com/hero_213/blog/static/398912142014111922139370/
在android的framework源码中添加自定义的permission以便限制应用程序调用自定义的系统接口,
在frameworks/base/core/res/AndroidManifest.xml 中添加:
<permission android:name="android.permission.ENTERPRISE_SETTINGS"
android:label="@string/permlab_invoke_ivt_method"
android:description="@string/permdesc_invoke_ivt_method"
android:protectionLevel="dangerous" />
在frameworks/base/core/res/values/string.xml中添加
permlab_invoke_ivt_method 、permdesc_invoke_ivt_method的字符串资源
在被调用的接口处添加权限检验
public String getDeviceInfo() throws RemoteException
{
。。。。。。
mContext.enforceCallingOrSelfPermission("android.permission.ENTERPRISE_SETTINGS", null);
。。。。。。
}
以下列出具体项目相关说明:
<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
android:label: 对权限的一个简短描述
android:name :权限的唯一标识,一般都是使用 报名加权限名
android:permissionGroup: 权限所属权限组的名称
android:protectionLevel: 权限的等级,
normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户
dangerous 权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户
signature 权限表明的操作只针对使用同一个证书签名的app开放
signatureOrSystem 与signature类似,只是增加了rom中自带的app的声明
android:name 属性是必须的,其他的可选,未写的系统会指定默认值