19

Android R Preview 1 introduced a new permission called QUERY_ALL_PACKAGES. The documentation for the permission says the following:

Allows query of any normal app on the device, regardless of manifest declarations.

Has anyone worked out what this actually does?

I've tried running the following on the emulator image, and the permission had no effect on either of them:

  • packageManager.queryIntentActivities(intent, 0)
  • packageManager.getInstalledPackages(0)
4

4 回答 4

23

即使QUERY_ALL_PACKAGES添加了权限,您仍然需要将<queries>过滤器添加到您的AndroidManifest.

例如,对于启动器应用程序,它可能是:

<permission android:name="android.permission.QUERY_ALL_PACKAGES" />

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
    </intent>
</queries>
于 2021-03-08T07:52:19.730 回答
6

Android 11 引入了与包可见性相关的更改。这些更改仅在应用程序以 Android 11 为目标时才会影响它们。有关这些更改的详细信息,请查看有关 Android 上的包可见性的指南。

https://developer.android.com/training/package-visibility

https://developer.android.com/about/versions/11/privacy/package-visibility

https://developer.android.com/training/package-visibility

就我而言,Cordova-android 10.1.1,targetSdkVersion 30

我添加了

 <queries>
                <package android:name="com.google.android.gm" />
                <package android:name="com.facebook.katana" />
                <intent>
                    <action android:name="android.intent.action.VIEW" />
                    <data android:scheme="https" />
                </intent>
                <intent>
                    <action android:name="android.intent.action.DIAL" />
                    <data android:scheme="tel" />
                </intent>
                <intent>
                    <action android:name="android.intent.action.SEND" />
                    <data android:mimeType="*/*" />
                </intent>
            </queries>

在 AndroidManifest.xml 中

于 2021-10-08T03:41:06.423 回答
3

现在 DP2 出来了,他们对此进行了更多的报道。

引用我自己的话:

虽然我尚未测试 R DP2 的这一方面,但您的应用程序现在似乎一般无法找出安装了哪些其他应用程序。引用的示例是queryIntentActivities(),但要使这真正起作用,您需要认真进行脑叶切除术PackageManager。您可以将某些包和某些<intent-filter> 结构列入白名单,以尝试在某些用例中使用它。而且,这就是QUERY_ALL_PACKAGES在 DP1 中看到的神秘权限发挥作用的地方——该权限消除了这些新限制。鉴于“寻找 Google Play 为需要此权限的应用程序提供指南”警告,最安全的假设是,如果您尝试使用它,最终您将被机器人禁止进入 Play 商店。

因此,您可能想在 DP2 上重新尝试您的实验。我计划在接下来的几周内做同样的事情。

于 2020-03-19T23:39:04.560 回答
1

如果应用程序尝试与另一个应用程序通信,则应为 Android 11+ 添加此权限,否则这些应用程序将无法工作/触发

于 2021-07-09T09:45:56.130 回答