【发布时间】:2011-09-04 18:31:35
【问题描述】:
在我的应用程序中,我想显示特定 Android 手机上每个可用启动器(用于主屏幕)的列表。是否可以从 Android 操作系统获取某种信息?如何进行此调用?
谢谢!
亲切的问候 丹尼尔
【问题讨论】:
标签: android launcher homescreen
在我的应用程序中,我想显示特定 Android 手机上每个可用启动器(用于主屏幕)的列表。是否可以从 Android 操作系统获取某种信息?如何进行此调用?
谢谢!
亲切的问候 丹尼尔
【问题讨论】:
标签: android launcher homescreen
上面的代码 sn-p 不能正常工作,因为启动器列表的结果还包括系统设置的应用程序,其包名为 com.android.settings。我的 Pixel 2 (Android 8.0) 和 Nexus 6 (Android 7.1) 都会出现这种意外结果。
【讨论】:
您可以查询与特定Intent匹配的ResolverInfo列表。下一个 sn-p 代码打印所有已安装的启动器。
PackageManager pm = getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
for (ResolveInfo resolveInfo : lst) {
Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName);
}
【讨论】:
(!lst.isEmpty()),见off. reference。 2. 你的答案比@Flavio 的好,见 cmets
Intent.ACTION_MAIN,对于Intent category使用Intent.CATEGORY_HOME,而不是硬编码字符串。
尝试以下方法:
获取已安装应用程序列表:
列出 pkgList = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
遍历此列表并使用以下方法获取启动器活动:
getPackageManager().getLaunchIntentForPackage(packageName);
详情请阅读:PackageManager。希望这会有所帮助。
【讨论】:
getLaunchIntentForPackage(..) 将为您返回任何应用程序的启动意图,而不仅仅是启动器。例如。 “设置”和“媒体播放器”应用也有启动意图