Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何在android 2.3及以上版本中获得当前启动器的包名?_Java_Android_Launcher - Fatal编程技术网

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

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

我认为您应该能够使用,并具有家庭用途

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()