广播自定义权限

2020-12-24 15:55:06.564 959-1410/? W/BroadcastQueue: Permission Denial: receiving Intent { act=com.myapp.demo.BGPLUGIN_API_ACTION cat=[com.xxx.mobilepay.RESP_RECEIVER.QueryUi] flg=0x10 (has extras) } to ProcessRecord{ca66416 9084:com.myapp.demo/u0a340} (pid=9084, uid=10340) requires com.xxx.mobilepay.RESP_RECEIVER due to sender com.bg.bgpay (uid 10341)

场景:
目前我们提供支付插件给第三方app调用,然后,某天突然反馈到一个这样的问题,不知所措,
后来被反馈

1.如果先装插件,后装应用,问题不会出现
2.如果先装应用,后装插件,问题会出现。这能解释问什么有的机器好,有的不好,以及重装应用后就好了

应用安装顺序和安卓权限 引起的问题
其实归根结底在于我对自定义权限注意点不清楚

场景:App A中声明了权限PermissionA,App B中使用了权限PermissionA。

  • 情况一:PermissionA的保护级别是normal或者dangerous
    App B先安装,App A后安装,此时App B无法获取PermissionA的权限,从App B打开App A会报权限错误。
    App A先安装,App B后安装,从App B打开App A一切正常。

  • 情况二:PermissionA的保护级别是signature或者signatureOrSystem
    App B先安装,App A后安装,如果App A和App B是相同的签名,那么App B可以获取到PermissionA的权限。如果App A和App B的签名不同,则App B获取不到PermissionA权限。
    即,对于相同签名的app来说,不论安装先后,只要是声明了权限,请求该权限的app就会获得该权限。
    这也说明了对于具有相同签名的系统app来说,安装过程不会考虑权限依赖的情况。安装系统app时,按照某个顺序(例如名字排序,目录位置排序等)安装即可,等所有app安装完了,所有使用权限的app都会获得权限。

如果对广播权限不清楚可以简单看看 https://www.jianshu.com/p/eaf77fca4fc1
文章简单明了 我就不写demo 直接记录在这了

至少以后再遇到就知道了

你可能感兴趣的:(广播自定义权限)