Manifest queries标签 / targetAPI动态获取 / 手机 /包可见性

queries标签——管理软件包可见性

如果您的应用以 Android 11(API 级别 30)或更高版本为目标平台,在默认情况下,系统会自动让部分应用对您的应用可见,但会隐藏其他应用。通过让部分应用在默认情况下不可见,系统可以了解应向您的应用显示哪些其他应用,这样有助于鼓励最小权限原则,还可帮助 Google Play 等应用商店评估应用为用户提供的隐私权和安全性。

如果我们的应用运行在android11 或者更高版本的手机上,想要与自动可见的应用之外的应用交互,就要在manifest中添加queries标签。

如果您的应用以 Android 11(API 级别 30)或更高版本为目标平台,并且需要与应用(自动可见的应用除外)交互,请在您应用的清单文件中添加 元素。在 元素中,按软件包名称、按 intent 签名或按提供程序授权指定其他应用,如以下部分所述。

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

如果您知道要查询或与之交互的一组特定应用(例如,与您的应用集成的应用或您使用其服务的应用),请将其软件包名称添加到 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 元素的应用。

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

targetApi版本获取

int sdkVersion = this.getApplicationInfo().targetSdkVersion;

你可能感兴趣的:(android,android,java)