文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android权限控制之自定义权限

2022-06-06 10:17

关注

天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当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 Permission权限机制引子提到过Protection Level问题,这边我同样测试下这个Protection Level,下面结果中Y表示可以正常访问,N则表示不可以访问。

需要注意的是,使用自定义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. 的错误.

您可能感兴趣的文章:Android扫描二维码时出现用户禁止权限报错问题解决办法Android 操作系统获取Root权限 原理详细解析Android获取ROOT权限的实例代码Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码Android权限操作之uses-permission详解Android6.0动态申请权限所遇到的问题小结Android中Root权限获取的简单代码Android需要提升权限的操作方法android编程判断应用是否具有某个权限的方法Android权限如何禁止以及友好提示用户开通必要权限详解


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯