android QUERY_ALL_PACKAGES权限有什么作用?

kg7wmglp  于 2022-12-21  发布在  Android
关注(0)|答案(4)|浏览(594)

Android R Preview 1引入了一个名为QUERY_ALL_PACKAGES的新权限。该权限的文档内容如下:
允许查询设备上的任何普通应用,而不管清单声明如何。
有没有人知道这到底是干什么的?
我试着在模拟器映像上运行以下代码,权限对它们都没有影响:

  • packageManager.queryIntentActivities(intent, 0)
  • packageManager.getInstalledPackages(0)
67up9zun

67up9zun1#

即使添加了权限QUERY_ALL_PACKAGES,您仍然需要将<queries>过滤器添加到您的AndroidManifest
例如,对于启动器应用程序,它可能是:

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

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
    </intent>
</queries>
9bfwbjaz

9bfwbjaz2#

Android 11引入了与软件包可见性相关的更改。这些更改仅会影响面向Android 11及更高版本的应用。有关这些更改的详细信息,请查看有关Android上软件包可见性的官方文档。
https://developer.android.com/training/package-visibility
https://developer.android.com/about/versions/11/privacy/package-visibility
在我的例子中,它是 cordova Android v10.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

zmeyuzjn

zmeyuzjn3#

既然DP 2出来了,他们就开始玩了。
引用myself
虽然我还没有测试过RDP 2的这一方面,但一般来说,你的应用现在似乎无法发现安装了哪些其他应用。引用的例子是queryIntentActivities(),但要让它真正发挥作用,你需要认真地对PackageManager进行额叶切除。你可以将某些软件包和某些<intent-filter>结构列入白名单,以尝试在某些用例中避开这一点。而且,这就是DP 1中神秘的QUERY_ALL_PACKAGES权限发挥作用的地方--此权限取消了这些新限制。鉴于“寻找Google Play为需要此权限的应用提供指导”的警告,最安全的假设是,如果您尝试使用它,最终您将被机器人禁止进入Play商店。
所以,你可能想在DP 2上重新尝试你的实验。我计划在接下来的几周里做同样的事情。

6mw9ycah

6mw9ycah4#

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

相关问题