Android中的权限管理(基于Permission ProtectionLevel)

本文详细介绍了Android中权限管理的ProtectionLevel,包括Normal、Dangerous、Signature和SignatureOrSystem四个级别。讲解了不同级别的权限申请条件和应用场景,并通过实例说明如何在代码中控制权限访问。同时提到了Platform.xml文件在权限分配中的作用。
摘要由CSDN通过智能技术生成

     1、什么是protectionlevel呢?

      我们经常在AndroidManifest中使用权限,如果我们想让应用程序可以发短信,那么应该这样写:

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

      那么这个权限的定义是在哪里定义的呢?如下:

      frameworks/base/core/res/AndroidManifest.xml

<permission android:name="android.permission.SEND_SMS"
        android:permissionGroup="android.permission-group.COST_MONEY"
        android:protectionLevel="dangerous"
        android:label="@string/permlab_sendSms"
        android:description="@string/permdesc_sendSms" />
     这个xml可以认为是系统apk使用的AndroidManifest.xml,该apk使用系统的私钥进行签名。

     name:权限的名字,uses-permisson使用的。

     permissionGroup:权限的分类,在提示用户安装时会把某些功能差不多的权限放到一类。

     protectionLevel:分为Normal、Dangerous、Signature、SignatureOrSystem,我们后面会着重讲这个。

     label:提示给用户的权限名。

     description:提示给用户的权限描述。


    2、protectionLevel

    (1)Normal

    权限被声明为Normal级别,任何应用都可以申请,在安装应用时,不会直接提示给用户,点击全部才会展示。

    (2)Dangerous

    权限被声明为Dangerous级别,任何应用都可以申请,在安装应用时,会直接提示给用户。

    (3)Signature

    权限被声明为Signature级别,只有和该apk(定义了这个权限的apk)用相同的私钥签名的应用才可以申请该权限。
    frameworks/base/core/res/AndroidManifest.xml声明的权限为Signature级别,那么只有Android官方使用相同私钥签名的应用才可以申请该权限。

    (4)SignatureOrSystem

    权限被声明为SignatureOrSystem级别,有两种应用可以申请该权限。

    1)和该apk(定义了这个权限的apk)用相同的私钥签名的应用

    2)在/system/app目录下的应用

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值