了解自动可见的软件包

系统会自动让部分应用对您的应用可见,以便您的应用可与其交互,而无需声明 <queries> 元素。此行为有助于支持基本功能和常见用例。

自动可见的应用类型

尤其要注意,即使您的应用以 Android 11(API 级别 30)或更高版本为目标平台,以下类型的应用也始终对您的应用可见:

  • 您自己的应用。
  • 实现 Android 核心功能的某些系统软件包,例如媒体提供程序。
  • 安装了您应用的应用。
  • 使用 startActivityForResult() 方法在您的应用中启动 activity 的任何应用,正如如何获取 activity 的结果这一指南中所述。
  • 启动或绑定到您应用中的某项服务的任何应用。
  • 访问您应用中的 Content Provider 的任何应用。
  • 具有 Content Provider 的任何应用,其中您的应用已被授予 URI 权限来访问该 Content Provider。
  • 接收您应用的输入的任何应用。这种情况仅适用于您的应用作为输入法应用提供输入。

此外,您可以使用隐式显式 intent 来启动另一应用的 activity,无论这个应用是否对您的应用可见。

自动可见的系统软件包

实现 Android 核心功能的某些系统软件包会自动对您的应用可见,即使您的应用以 Android 11 或更高版本为目标平台也是如此。这组特定的软件包取决于运行您应用的设备。

如需查看特定设备的完整软件包列表,请在开发机器上的终端中运行以下命令:

adb shell dumpsys package queries

在命令输出中,找到 forceQueryable 部分。本部分包含设备上自动对您的应用可见的软件包列表。