如何在Android 2.3及更高版本中获取当前启动器的软件包名称?
如何在Java中以编程方式获取Android 2.3及更高版本中当前启动器的软件包名称?
如何在Java中以编程方式获取Android 2.3及更高版本中当前启动器的软件包名称?
我认为你应该能够使用PackageManager.resolveActivity(),具有家庭意图。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
随着 Android 11 中引入的程序包可见性更改,现在需要在应用程序的清单文件中添加一个查询元素,如下所示,然后才能查询 PackageManager.resolveActivity(intent:flags:) 方法中安装的默认主(又名启动器)活动,如此线程中接受的答案中所述:
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
</intent>
</queries>
如果从应用程序的清单中省略此查询元素,则设备会将该活动报告为其默认的主活动,而这很可能不是你想要的。com.android.settings.FallbackHome