Android R Preview 1引入了一个名为QUERY_ALL_PACKAGES的新权限。该权限的文档内容如下:允许查询设备上的任何普通应用,而不管清单声明如何。有没有人知道这到底是干什么的?我试着在模拟器映像上运行以下代码,权限对它们都没有影响:
QUERY_ALL_PACKAGES
packageManager.queryIntentActivities(intent, 0)
packageManager.getInstalledPackages(0)
67up9zun1#
即使添加了权限QUERY_ALL_PACKAGES,您仍然需要将<queries>过滤器添加到您的AndroidManifest。例如,对于启动器应用程序,它可能是:
<queries>
AndroidManifest
<permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <queries> <intent> <action android:name="android.intent.action.MAIN" /> </intent> </queries>
9bfwbjaz2#
Android 11引入了与软件包可见性相关的更改。这些更改仅会影响面向Android 11及更高版本的应用。有关这些更改的详细信息,请查看有关Android上软件包可见性的官方文档。https://developer.android.com/training/package-visibilityhttps://developer.android.com/about/versions/11/privacy/package-visibility在我的例子中,它是 cordova Android v10.1.1,targetSdkVersion = 30我补充道
targetSdkVersion
<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
AndroidManifest.xml
zmeyuzjn3#
既然DP 2出来了,他们就开始玩了。引用myself:虽然我还没有测试过RDP 2的这一方面,但一般来说,你的应用现在似乎无法发现安装了哪些其他应用。引用的例子是queryIntentActivities(),但要让它真正发挥作用,你需要认真地对PackageManager进行额叶切除。你可以将某些软件包和某些<intent-filter>结构列入白名单,以尝试在某些用例中避开这一点。而且,这就是DP 1中神秘的QUERY_ALL_PACKAGES权限发挥作用的地方--此权限取消了这些新限制。鉴于“寻找Google Play为需要此权限的应用提供指导”的警告,最安全的假设是,如果您尝试使用它,最终您将被机器人禁止进入Play商店。所以,你可能想在DP 2上重新尝试你的实验。我计划在接下来的几周里做同样的事情。
queryIntentActivities()
PackageManager
<intent-filter>
6mw9ycah4#
如果应用尝试与另一个应用通信,则应针对Android 11+添加此权限,否则这些应用将无法工作/触发
4条答案
按热度按时间67up9zun1#
即使添加了权限
QUERY_ALL_PACKAGES
,您仍然需要将<queries>
过滤器添加到您的AndroidManifest
。例如,对于启动器应用程序,它可能是:
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我补充道
到我的
AndroidManifest.xml
zmeyuzjn3#
既然DP 2出来了,他们就开始玩了。
引用myself:
虽然我还没有测试过RDP 2的这一方面,但一般来说,你的应用现在似乎无法发现安装了哪些其他应用。引用的例子是
queryIntentActivities()
,但要让它真正发挥作用,你需要认真地对PackageManager
进行额叶切除。你可以将某些软件包和某些<intent-filter>
结构列入白名单,以尝试在某些用例中避开这一点。而且,这就是DP 1中神秘的QUERY_ALL_PACKAGES
权限发挥作用的地方--此权限取消了这些新限制。鉴于“寻找Google Play为需要此权限的应用提供指导”的警告,最安全的假设是,如果您尝试使用它,最终您将被机器人禁止进入Play商店。所以,你可能想在DP 2上重新尝试你的实验。我计划在接下来的几周里做同样的事情。
6mw9ycah4#
如果应用尝试与另一个应用通信,则应针对Android 11+添加此权限,否则这些应用将无法工作/触发