调用android的基本启动器

时间:2014-12-18 18:03:31

标签: android launcher kiosk

您好我正在使用我的自定义启动器。我的自定义启动器设置为默认启动器,一旦用户以编程方式单击按钮,我需要调用android的基本启动器。我搜索了很多,发现我不能只关闭应用程序,所以finish()和退出(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);  

1 个答案:

答案 0 :(得分:1)

  

我正在尝试调用Android的基本启动器

没有概念作为&#34; Android的基本发射器&#34;。有数以千计的Android设备型号。预先安装的主屏幕实现有数十个(如果不是数百个)。一个名为com.android.launcher,它将在少数设备上。

  

使用解决方案编辑

不,这不是解决方案。如上所述,很少有设备com.android.launcher。有些人出于历史原因确实存在它,并且它没有反映用户将其视为原始主屏幕实现的内容。

欢迎您使用PackageManagerqueryIntentActivities()查找哪些活动包含MAIN / HOME <intent-filter>。如果有两个匹配,一个应该是您的活动,另一个是原始主屏幕。但是,完全可能有三个或更多匹配,在这种情况下,您应该询问用户提出哪个主屏幕实现。