【发布时间】:2014-12-18 18:03:30
【问题描述】:
您好,我正在开发我的自定义启动器。我的自定义启动器设置为默认启动器,一旦用户以编程方式单击按钮,我需要调用 android 的基本启动器。我搜索了很多,发现我不能只关闭应用程序,所以完成()和退出(0)不起作用。 我发现它只需要调用 android 的基本启动器,但很难得到最终答案。这是我所拥有的:
PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);
List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);
Collections.sort(launchables, new ResolveInfo.DisplayNameComparator(pm));
for(int i=0;i<launchables.size();i++) {
//find android's basic launcher package
if(launchables.get(i).toString().contains("com.android.launcher")) {
//open a package
ResolveInfo launchable = launchables.get(i);
Util.print(launchable.resolvePackageName);
Intent intent = pm.getLaunchIntentForPackage(launchable.resolvePackageName);
startActivity(intent);
}
}
我知道这段代码很难找到并调用一个包。此代码调用 Android 的设置,第二次调用出错。我很确定这段代码不好,我只是想让你知道我现在要做什么。谁能告诉我如何打开 Android 的基本启动器?
已用临时解决方案编辑
ComponentName name=new ComponentName("com.android.launcher", "com.android.launcher2.Launcher");
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setComponent(name);
startActivity(intent);
【问题讨论】:
-
I need to call the android's basic launcher once a user clicks a button programmatically- 为什么?你想做什么?对于您遇到的错误,除非您告诉我们错误是什么并在您的问题中包含堆栈跟踪表单 logcat,否则没有人可以提供帮助。 -
老兄。我说当我的自定义启动器设置为默认值时,我试图以编程方式调用 Android 的基本启动器。我刚刚找到了解决方案并进行了更新。修复错误不是我的目标。感谢您的回复和帮助