Android 11 中的软件包可见性和数据访问审核

Android 11 引入了软件包可见性更改,应用需使用 `<queries>` 元素声明可访问的其他应用。本文详细介绍了如何设置环境、查询特定软件包、过滤日志消息以及测试变更。同时,新增了数据访问审核功能,允许开发者按归因标记审核数据访问,提高隐私保护和透明度。

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

Android 11 中的软件包可见性

Android 11 更改了应用查询用户已在设备上安装的其他应用以及与之交互的方式。使用新的 <queries> 元素,应用可以定义一组自身可访问的其他应用。通过告知系统应向您的应用显示哪些其他应用,此元素有助于鼓励最小权限原则。此外,此元素还可帮助 Google Play 等应用商店评估应用为用户提供的隐私权和安全性。
如果应用以 Android 11 为目标平台,您可能需要在应用的清单文件中添加 <queries> 元素。在 <queries> 元素中,您可以按软件包名称按 intent 签名指定应用。

注意:在某些情况下,即使您的应用以 Android 11 为目标平台,您也根本不需要更新自己的应用来支持这一变更。

返回其他应用相关结果的PackageManager方法(如queryIntentActivities())会根据发起调用的应用的<queries>声明进行过滤。与其他应用的显式交互(如startService())还要求目标应用与<queries>中的某项声明相符。

设置您的环境

如需构建使用 <queries> 元素的应用,请使用以下工具:

查询特定软件包及与之交互

如果您知道要查询或与之交互的一组特定应用(例如,与您的应用集成的应用或您使用其服务的应用),请将其软件包名称添加到 <queries> 元素内的一组 <package> 元素中:

<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
</queries>
...
</manifest>

在给定 intent 过滤器的情况下查询应用及与之交互

您的应用可能需要查询一组具有特定用途的应用或与之交互,但您可能不知道要添加的具体软件包名称。在这种情况下,您可以在 <queries> 元素中列出 intent 过滤器签名。然后,您的应用就可以发现具有匹配的 <intent-filter> 元素的应用。

以下示例允许您的应用看到支持 JPEG 图片共享功能的已安装应用:

<manifest package="com.example.game">
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
...
</manifest>

<intent> 元素有一些限制:

  • 您必须只添
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值