html5中文学习网

您的位置: 首页 > android » 正文

Android权限控制之自定义权限_Android

[ ] 已经帮助:人解决问题

天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。fMgHTML5中文学习网 - HTML5先行者学习网

Permission App: used to define a new permissionfMgHTML5中文学习网 - HTML5先行者学习网
这个作为定义权限的App,我称之为Permission App.fMgHTML5中文学习网 - HTML5先行者学习网
Client App: used to access the specified activity of Permission AppfMgHTML5中文学习网 - HTML5先行者学习网
这个作为访问上述自定义权限的App,我称之为Client AppfMgHTML5中文学习网 - HTML5先行者学习网

先看如何写Permission AppfMgHTML5中文学习网 - HTML5先行者学习网

第一步fMgHTML5中文学习网 - HTML5先行者学习网

Permission App很简单,它的任务就是定一个Permission,使用< permission>标签即可,我们假设内容如下:fMgHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
fMgHTML5中文学习网 - HTML5先行者学习网
<permission android:name="custom.permission.STARTACTIVITY" android:description="@string/permission_dcr" android:protectionLevel=signatureOrSystem android:label="label"></permission>fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网
第二步fMgHTML5中文学习网 - HTML5先行者学习网

然后在定一个Activity,这个Activity很简单就是展示下一行字,如”Hello from Custiom Permission Activity!”这里就不详述。fMgHTML5中文学习网 - HTML5先行者学习网

第三步fMgHTML5中文学习网 - HTML5先行者学习网

最重要的地方:我们需要为这个Activity指明访问权限,权限即为我们刚申请的权限,这个需要同样需要在AndroidManifest.xml文件中标识,如下:fMgHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
fMgHTML5中文学习网 - HTML5先行者学习网
<activityfMgHTML5中文学习网 - HTML5先行者学习网
        android:name="com.example.custompermission.MainActivity"fMgHTML5中文学习网 - HTML5先行者学习网
        android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY">  fMgHTML5中文学习网 - HTML5先行者学习网
</activity>fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网
这个Activity于是就被打上了必须使用” custom.permission.STARTACTIVITY”权限才能访问的印记。fMgHTML5中文学习网 - HTML5先行者学习网

接着写Client AppfMgHTML5中文学习网 - HTML5先行者学习网

至于如何写Client App,那就so so so … easy了,只需两步:fMgHTML5中文学习网 - HTML5先行者学习网

第一步fMgHTML5中文学习网 - HTML5先行者学习网

在AndroidManifest.xml文件中首先申请权限,如下:fMgHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
fMgHTML5中文学习网 - HTML5先行者学习网
<uses-permission android:name="custom.permission.STARTACTIVITY"/>fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网
第二步fMgHTML5中文学习网 - HTML5先行者学习网

访问Permission App表明需要该权限的Activity,代码如下:fMgHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
fMgHTML5中文学习网 - HTML5先行者学习网
Intent in = new Intent();  fMgHTML5中文学习网 - HTML5先行者学习网
in.setClassName("com.example.custompermission", "com.example.custompermission.MainActivity");  fMgHTML5中文学习网 - HTML5先行者学习网
startActivity(in);fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网

大功告成fMgHTML5中文学习网 - HTML5先行者学习网

我们可以测试下效果,首先安装Permission App,然后接着安装Client App,结果如下:fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网

点击之后fMgHTML5中文学习网 - HTML5先行者学习网

fMgHTML5中文学习网 - HTML5先行者学习网

另外我曾经在Android Permission权限机制引子提到过Protection Level问题,这边我同样测试下这个Protection Level,下面结果中Y表示可以正常访问,N则表示不可以访问。fMgHTML5中文学习网 - HTML5先行者学习网

fMgHTML5中文学习网 - HTML5先行者学习网

需要注意的是,使用自定义Permission的activity如果设置了:fMgHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
fMgHTML5中文学习网 - HTML5先行者学习网
<activityfMgHTML5中文学习网 - HTML5先行者学习网
        android:name="com.example.custompermission.MainActivity"fMgHTML5中文学习网 - HTML5先行者学习网
        android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY">  fMgHTML5中文学习网 - HTML5先行者学习网
<intent-filter>  fMgHTML5中文学习网 - HTML5先行者学习网
        <action android:name="android.intent.action.MAIN" /> fMgHTML5中文学习网 - HTML5先行者学习网
        <category android:name="android.intent.category.LAUNCHER" />  fMgHTML5中文学习网 - HTML5先行者学习网
</intent-filter>fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网

那就不能从Launcher中启动该App,因为只有你的Launcher必须使用了uses-permission去请求获取custom.permission.STARTACTIVITY权限,事实上你的Launcher是不具备已经请求自定义权限的。fMgHTML5中文学习网 - HTML5先行者学习网

Launcher会报:Application is not installed on your phone. 的错误.fMgHTML5中文学习网 - HTML5先行者学习网
fMgHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助