安卓R版本访问其他app数据报AppsFilter: interaction: ***BLOCKED 错误

在Android R版本上,一个ContentProvider的demo遇到AppsFilter: interaction: BLOCKED错误。原因是Android 11引入了新的权限控制机制,要求app在manifest中声明可访问的其他应用。通过添加<queries>元素,可以解决这个问题,以符合最小权限原则,并提高隐私和安全性。修复后,应用能够正常访问已声明的应用数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安卓r上面写了一个ContentProvider的demo,一直报下面的错误

10-24 18:00:08.328  3236  5020 I AppsFilter: interaction: PackageSetting{e08f7bb com.android.demo.contentresolverdemo/10273} -> PackageSetting{18d0c4a com.android.demo.contentproviderdemo/10272} BLOCKED

检查了很久demo并没有问题,只能debug下contentprovider源码,发现安卓r多了一个AppsFilter的类,里面有一个mShouldFilterCache的成员变量记录了每一个uid可被访问的uid

https://cs.android.com/android/platform/superproject/+/master:frameworks/base/services/core/java/com/android/server/pm/AppsFilter.java;l=70?q=AppsFilter&sq=

上网查了一下还真是r上新出的机制

Android 11 更改了应用查询用户已在设备上安装的其他应用以及与之交互的方式。使用新的 <queries> 元素,应用可以定义一组自身可访问的其他应用。通过告知系统应向您的应用显示哪些其他应用,此元素有助于鼓励最小权限原则。此外,此元素还可帮助 Google Play 等应用商店评估应用为用户提供的隐私权和安全性。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值