您的位置:首页 > 移动开发 > Android开发

Android使用自定义权限

2016-02-09 13:47 417 查看
说明:博客纯手工编写,转载或收藏请注明出处,觉得可以或支持作者的,请添加作者支付宝: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:label: 权限的一个简短描述

android:permissionGroup: 权限所属权限组的名称

补充:

normal:是最低的等级,声明次权限的app,系统会默认授予该权限,不会提示用户(默认赋予的权限,换句话说就是只需要定义name属性即可)

dangerous:权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户

signature:权限表明的操作只针对使用同一个证书签名的app开放

signatureOrSystem:与signature类似,只是增加了rom中自带的app的声明

注:android:name 属性是必须的,其他的可选,未写的系统会指定默认值

说明:博客纯手工编写,转载或收藏请注明出处,觉得可以或支持作者的,请添加作者支付宝:872157571@qq.com(生活圈中“每天一主题”微博客更新,请求好友时请备注“csdn”)

代码下载:http://download.csdn.net/detail/huang_wei_cai/9429300
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: