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

时间:2012-04-27 04:42:34

标签: java android launcher

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

2 个答案:

答案 0 :(得分:62)

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

答案 1 :(得分: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()

提示: 如果没有默认设置,则对于一般的System Intent Receiver,它可能会变成“ Android系统”或“打开”

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