Java 我如何在android 2.3及以上版本中获得当前启动器的包名?
如何以Java编程的方式获取android 2.3及以上版本中当前启动器的包名?我认为您应该能够使用,并具有家庭用途Java 我如何在android 2.3及以上版本中获得当前启动器的包名?,java,android,launcher,Java,Android,Launcher,如何以Java编程的方式获取android 2.3及以上版本中当前启动器的包名?我认为您应该能够使用,并具有家庭用途 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ON
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;
通常,使用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()
或
提示: 如果没有默认设置,这可能会成为“Android系统”或“开放”的一般系统意图接收器 提示:
如果您正在寻找web浏览器,您可能会使用
net.openid.appauth.browser.browser.browser选择器#select()
()隐式获取默认浏览器,即使没有一个显式设置。这不是只给出当前应用程序的包名吗?如果没有选择“默认”启动器,它只返回“android”。这不是一种常见的情况,但确实会发生。请注意,如果没有匹配项,它将返回NULL,并且您将在最后一行获得NPE!是的,这是用于说明解决方案的插图代码,不应用于“生产”用途。此外,如果您的手机没有家庭应用程序。。。您可能还有其他问题:)这是应用程序的可读名称,而不是包名。
resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager).toString()