**说明:**博客纯手工编写,转载或收藏请注明出处,觉得可以或支持作者的,请添加作者支付宝:872157571@qq.com(生活圈中“每天一主题”微博客更新,请求好友时请备注“csdn”)
自定义权限一般用于某个活动的访问保护,只有拥有该权限的客户端才可以访问该活动,通常自己客户端在自定义权限时已经默认拥有了权限,而其他客户端如需要访问该活动,则必须加上该活动需要的权限,权限声明在全局上。
当前客户端的AndroidManifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.test"
android:versionCode="1"
android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="14" />
<!-- permission:自定义权限标签,系统权限的定义也是使用该标签 -->
<permission
android:name="custom.permission.MYACTIVITY"
android:protectionLevel="normal"
android:label="Start My Activity"
android:description="@string/my_activity"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.test.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 哪个活动需要被保护,就在哪个活动上加入访问权限即可,在全局上声明权限一般都是系统级别的,表明当前应用拥有做该资源和功能的使用权限 -->
<activity
android:permission="custom.permission.MYACTIVITY"
android:name="com.example.test.Main1Activity"
android:label="@string/title_activity_main1" >
<!-- 定义这个过滤器是便于被访问的有入口 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
</manifest>
其他客户端的AndroidManifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test_"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"/>
<!-- 在全局上声明可能需要访问保护活动的权限,写法最好模仿系统的写法,权限名称没有固定的规定 -->
<uses-permission android:name="custom.permission.MYACTIVITY" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.test_.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
自定义权限需要注意的地方:
android:name: 权限的唯一标识,一般都是使用 报名加权限名
android:protectionLevel: 权限的等级
android:description: 描述这个权限所针对的操作及用户授予这个权限的后果
android🏷 权限的一个简短描述
android:permissionGroup: 权限所属权限组的名称
补充:
normal:是最低的等级,声明次权限的app,系统会默认授予该权限,不会提示用户(默认赋予的权限,换句话说就是只需要定义name属性即可)
dangerous:权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户
signature:权限表明的操作只针对使用同一个证书签名的app开放
signatureOrSystem:与signature类似,只是增加了rom中自带的app的声明
注:android:name 属性是必须的,其他的可选,未写的系统会指定默认值
代码下载:http://download.csdn.net/detail/huang_wei_cai/9429300