服务器之家

服务器之家 > 正文

Android权限控制之自定义权限

时间:2021-03-15 15:38     来源/作者:Android开发网

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

permission app: used to define a new permission
这个作为定义权限的app,我称之为permission app.
client app: used to access the specified activity of permission app
这个作为访问上述自定义权限的app,我称之为client app

先看如何写permission app

第一步

permission app很简单,它的任务就是定一个permission,使用< permission>标签即可,我们假设内容如下:

复制代码 代码如下:

<permission android:name="custom.permission.startactivity" android:description="@string/permission_dcr" android:protectionlevel=signatureorsystem android:label="label"></permission>


第二步

 

然后在定一个activity,这个activity很简单就是展示下一行字,如”hello from custiom permission activity!”这里就不详述。

第三步

最重要的地方:我们需要为这个activity指明访问权限,权限即为我们刚申请的权限,这个需要同样需要在androidmanifest.xml文件中标识,如下:

复制代码 代码如下:

<activity
        android:name="com.example.custompermission.mainactivity"
        android:label="@string/app_name" android:permission="custom.permission.startactivity"> 
</activity>


这个activity于是就被打上了必须使用” custom.permission.startactivity”权限才能访问的印记。

 

接着写client app

至于如何写client app,那就so so so … easy了,只需两步:

第一步

在androidmanifest.xml文件中首先申请权限,如下:

复制代码 代码如下:

<uses-permission android:name="custom.permission.startactivity"/>


第二步

 

访问permission app表明需要该权限的activity,代码如下:

复制代码 代码如下:

intent in = new intent(); 
in.setclassname("com.example.custompermission", "com.example.custompermission.mainactivity"); 
startactivity(in);

 

大功告成

我们可以测试下效果,首先安装permission app,然后接着安装client app,结果如下:
Android权限控制之自定义权限

点击之后

Android权限控制之自定义权限

另外我曾经在android permission权限机制引子提到过protection level问题,这边我同样测试下这个protection level,下面结果中y表示可以正常访问,n则表示不可以访问。

Android权限控制之自定义权限

需要注意的是,使用自定义permission的activity如果设置了:

复制代码 代码如下:

<activity
        android:name="com.example.custompermission.mainactivity"
        android:label="@string/app_name" android:permission="custom.permission.startactivity"> 
<intent-filter> 
        <action android:name="android.intent.action.main" />
        <category android:name="android.intent.category.launcher" /> 
</intent-filter>

 

那就不能从launcher中启动该app,因为只有你的launcher必须使用了uses-permission去请求获取custom.permission.startactivity权限,事实上你的launcher是不具备已经请求自定义权限的。

launcher会报:application is not installed on your phone. 的错误.

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部