我有以下代码,有人告诉我,对于Android11,我需要在清单中添加queries标签:
final PackageManager pm = getPackageManager();
Intent main = new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> packages = pm.queryIntentActivities(main, 0); //get a list of installed apps.有人告诉我应该是这样的:
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent>
</queries>问题是我不能添加<category>标签。Android Studio说该元素在那里是不允许的。我只能在<intent>中添加<action>和<data>标记。似乎其他人也有这个问题。这很奇怪,因为Android自己的文档指导我们在那里使用<category>标签。
发布于 2021-10-25 10:09:45
The <queries> section is introduced in API 30,因此请确保仅当您的目标版本高于此版本时才使用它。
例如,当你想要从你的应用程序中启动一些其他应用程序时,它确实是必要的,因为你只知道它们的包名。否则,在使用像packageManager.getLaunchIntentForPackage("com.yyy")这样的函数时,使用包管理器将返回一些null。你可以在这里找到更多信息:Package visibility in Android 11
在您的示例中,您可以像这样编写该部分:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx">
...
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent>
</queries>
...
</manifest>https://stackoverflow.com/questions/67043062
复制相似问题