Android自定义权限使用场景

一、背景

在Android开发过程中,往往需要开放一些导出组件以方便公司内其他相关应用使用。如应用A和应用B都需要调用A的授权登录服务,但又不允许非公司的应用C调用该服务,这时候就可以使用自定义权限来保证只有公司内部应用A和B可以调用。

二、优势

如果不开启自定义权限来验证第三方app是否可以调用,则当该组件导出后,任何应用都可以在外部调起该导出组件,造成一定的安全风险。

三、使用

在app A中创建一个导出的Activity,并在A的manifest中添加自定义权限

<permission android:name="com.ndkdemo.akai.testida.permission.StudyPermission" android:protectionLevel="signature"/>

  <activity android:exported="true" android:name=".StudyPermission" android:permission="com.ndkdemo.akai.testida.permission.StudyPermission"/>

这样配置后,虽然组件StudyPermission导出,但由于调用该组件需要权限,所以不具备该权限的第三方app无法调起该组件。

注意自定义权限中的 android:protectionLevel="signature" 字段。这个字段的意思是,调起该组件不仅需要第三方app具有该权限,同时需要第三方app和组件app具有相同的签名。 当没有这个signature字段时,第三方app可以配置一个与该权限名称相同的权限调起该组件,从而不能达到完全阻止非公司app禁止调起导出组件的目的。

 

此时,第三方app与公司内app签名不同的情况下,即使配置的了与导出组件相同的权限,依然无法调起导出组件,从而大大加强了导出组件的安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值