Android中自定义权限permission

Android中权限是什么概念呢?

首先一点,权限是针对于Android组件来说的,同时权限在不同应用间才起作用。

Android权限就相当于一把锁,将Android组件锁上,只有应用内的组件以及有权限的不同应用可以访问。

  Android中的运行时安全性检查是在进程级别和操作级别上进行的。在进程级别,Android禁止一个应用程序直接访问另一个应用程序的数据。实现方法是,每个应用程序都在不同的进程中运行,使用唯一且固定的ID。在操作级别上,Android定义了一组受保护的功能和资源。要使用应用程序能够访问此信息,必须向  AndroidManifest.xml 文件添加一个或多个权限请求。也可以为应用程序定义自定义权限。

Android程序之间如何相互访问资源?

  1.Android组件本身提供了一种方法可以将自身公布出去,以便其他应用可以访问这些组件。

  在AndroidMainfest.xml文件中找到要公布的组件,然后加上一个属性Android:exported = "true",将组件公布出来,默认情况为false。

  2.访问公布组件,例如Activity的访问:

示例代码:Intent intent = new Intent();
    intent.setComponent(new  ComponentName("com.example.testandroiddemo","text.TextActivity"));//参数介绍,第一个是 //程序的包名,第二个Activity的路径
   startActivity(intent);

至于其他公布组件的访问,可以自行上网上查找,一般都是先获得程序的包,在获得资源路径。

完成以上两步即可完成不同应用程序之间的资源访问。


上述步骤虽然很简单就实现了不同应用之间的资源访问,但是有一个问题出现了,我把程序公布出去后,其他应用只需要知道我的程序包名,和资源路径,就可以访问其资源了。感觉不太安全啊。于是Android提供了permission让开发人员可以针对自身的应用加上一道锁,只有知道钥匙的人才可以访问。下面我们就来学习一下permission的一些使用方法。


Android中permission的使用步骤:

1.定义permission,在自己应用的mainfest文件里加上一下代码,记得在application标签外哦。

 <permission android:name="com.example.testandroiddemo.ACTIVITY_PERMISSION" 
        android:protectionLevel="
normal" >
    </permission>

权限属性介绍:

android:protectionLevel属性值分四个级别:

normal:低风险权限,在安装的时候,系统会自动授予权限给 application。
dangerous:高风险权限,系统不会自动授予权限给 app,在用到的时候,会给用户提示。
signature:签名权限,在其他 app 引用声明的权限的时候,需要保证两个 app 的签名一致。这 样系统就会自动授予权限给第三方 app,而不提示给用户。
signatureOrSystem:这个权限是引用该权限的 app 需要有和系统同样的签名才能授予的权限,一 般不推荐使。
ndroid:permissionGroup 属性值虽然在这里没有使用但还是介绍一下,看它的名字就知道,它的功能呢个 其实就是将 permission进行分组,将同一类权限分到一个组里。

2.将权限加入到组件中。
 <activity
            android:name="text.TextActivity"
            android:exported="true" 
            android:permission="com.example.testandroiddemo.ACTIVITY_PERMISSION">
       </activity>
3.另一个应用访问TextActivity组件。
只需要在该应用的manifest文件中加入获得权限:
<uses-permission android:name="com.example.testandroiddemo.ACTIVITY_PERMISSION" />
完成以上3步即可完成自定义权限的使用。





  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_wang_hui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值