如何在android 2.3及更高版本中获取当前启动器的包名?

问题描述 投票:30回答:2

如何在Java中以编程方式获取android 2.3及更高版本中当前启动程序的包名?

java android launcher
2个回答
63
投票

我认为你应该能够使用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;

0
投票

一般来说,I agree to @JesusFreke使用PM resolveActivity

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);

但要获得正确的包名,您应该使用

resolveInfo.loadLabel(packageManager).toString()

要么

resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager).toString()

提示:如果没有默认设置,这可能会成为“Android系统”或“打开”,如同一般系统意图接收器

提示:如果您正在寻找Web浏览器,您可以使用net.openid.appauth.browser.BrowserSelector#select()0.7.1+)隐式获取默认浏览器,即使没有一个显式设置。

© www.soinside.com 2019 - 2024. All rights reserved.