android之系统权限的处理方式

本文讲述了在第三方应用中通过TelephonyManager获取IMEI时遇到的SecurityException,需要系统权限READ_PRIVILEGED_PHONE_STATE。权限保护级别要求为signature或privileged,且需在priv-app环境中集成并配置AndroidManifest.xml和permissions.xml文件。系统应用可以直接使用该权限。
摘要由CSDN通过智能技术生成

描述

有个需求是需要第三方应用通过TelephonyManager去获取到IMEI,之前获取时发现报以下异常

04-23 13:41:41.005 10800 10800 E AndroidRuntime: Caused by: java.lang.SecurityException: getImeiForSlot: The user 10131 does not meet the requirements to access device identifiers.

通过源码发现需要以下系统权限

android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE

查看frameworks/base/core/res目录下的AndroidManifest.xml文件

<permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
     android:protectionLevel="signature|privileged" />

表示这个权限保护级别为signature(platform签名)或者privileged(priv-app)

三方应用

特权处理

三方应用是拥有应用本身自带的签名的,此时需要将此apk集成到priv-app下才能使用这个系统权限。

配置xml

集成后还需要配置xml文件,一般命名为以包名为区分,此处命名为com.example.test.xml,里面的详细信息如下所示,此文件需要集成到/system/etc/permissions方可起作用

<permissions>
	<privapp-permissions package="com.example.test">
		<permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
	</privapp-permissions>
</permissions>

系统应用

只需要通过platform签的应用是可正常访问此系统权限

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值