Android 自定义权限

本文详细介绍了在Android中如何自定义权限,包括如何在Manifest文件中定义和注册新权限,设置不同级别的保护,并展示了如何为特定Activity添加权限及在其他应用中调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android 中我们可以在Manifest文件中定义自己的权限

uses-permission标签用于向Android 系统申请权限

permission标签用于在Android 系统中注册新权限

<--用permission标签注册一个权限-->
<permission
        android:name="paul.permission.TEST"
        android:description="@string/permdesc_deadlyActivity"
        android:permissionGroup="paul.permission-group.TEST"
        android:protectionLevel="signature" />

相关属性:
android:label:权限名字,显示给用户的,值可是一个 string 数据,例如这里的“自定义权限”。
android:description:比 label 更长的对权限的描述。值是通过 resource 文件中获取的,不能直接写 string 值。
android:name:权限名字,如果其他 app 引用该权限需要填写这个名字。
android:protectionLevel:权限级别,分为 4 个级别:
normal:低风险权限,在安装的时候,系统会自动授予权限给 application。
dangerous:高风险权限,系统不会自动授予权限给 app,在用到的时候,会给用户提示。
signature:签名权限,在其他 app 引用声明的权限的时候,需要保证两个 app 的签名一致。这样系统就会自动授予权限给第三方 app,而不提示给用户。
signatureOrSystem:这个权限是引用该权限的 app 需要有和系统同样的签名才能授予的权限,一般不推荐使用。

给一个Activity添加权限

我们知道,Android允许一个应用(客户端)调用另一个应用(服务端)的组件。那么作为服务端的应用就得暴露相应的组件,客户端应用才能访问。当然,在暴露的时候,权限是非必须的,如果暴露的组件没有权限的话,那么任何的其他应用都可以来调用该组件;如果该组件申请了权限,那么只有拥有该权限的应用才能调用该组件。

如果没个应用都可以调用我们的组件的话,显然是不安全的,我们希望只有使用了我们的权限的应用,才能调用我们暴露的组件,我们可以在activity中加入permission属性。

 <activity
            android:name=".PrivateActivity"
            android:exported="true"
            android:label="@string/title_activity_private"
            android:permission="paul.permission.TEST" />

如何在另个应用中调用

我们要在另一个应用中调用,第一要申请这个权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zlp.clientapplicant">

    <uses-permission android:name="paul.permission.TEST" />
        ...
</manifest>

然后隐试调用
Intent intent = new Intent();
intent.setClassName("com.example.zlp.myapplication", "com.example.zlp.myapplication.PrivateActivity");
startActivity(intent);

就如同调用电话权限一样(安全性)
http://blog.sina.com.cn/s/blog_49f4857001011pu5.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值