Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
调用android';s基本发射器_Android_Launcher_Kiosk - Fatal编程技术网

调用android';s基本发射器

调用android';s基本发射器,android,launcher,kiosk,Android,Launcher,Kiosk,嗨,我正在做我的自定义启动器。我的自定义启动器设置为默认启动器,一旦用户以编程方式单击按钮,我需要调用android的基本启动器。我搜索了很多,发现我不能关闭应用程序,所以finish()和exit(0)不起作用。 我只需要打电话给安卓的基本启动器,就可以找到它,但很难得到最终的答案。以下是我所拥有的: PackageManager pm=getPackageManager(); Intent main=new Intent(Intent.ACTION_MAIN, null);

嗨,我正在做我的自定义启动器。我的自定义启动器设置为默认启动器,一旦用户以编程方式单击按钮,我需要调用android的基本启动器。我搜索了很多,发现我不能关闭应用程序,所以finish()和exit(0)不起作用。 我只需要打电话给安卓的基本启动器,就可以找到它,但很难得到最终的答案。以下是我所拥有的:

    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的基本启动器”的概念。Android设备有数千种型号。有几十种(如果不是几百种的话)预安装的主屏幕实现。其中一个名为
com.android.launcher
,将在少数设备上使用

用解决方案编辑

不,这不是解决办法。如上所述,很少有设备具有
com.android.launcher
。有些人确实是出于历史原因才有了它,但它并没有反映出用户对其原始主屏幕实现的看法


欢迎使用
PackageManager
queryIntentActivities()
查找哪些活动有
MAIN
/
主页
。如果有两个匹配项,一个应该是您的活动,另一个应该是原始主屏幕。但是,完全有可能存在三个或更多匹配项,在这种情况下,您应该询问用户要使用哪个主屏幕实现。

一旦用户以编程方式单击按钮,我需要调用android的基本启动器
-为什么?你想干什么?对于您的错误,除非您告诉我们错误是什么,并在您的问题中包含堆栈跟踪表logcat,否则没有人能提供帮助。我说过,当我的自定义启动器设置为默认值时,我试图通过编程方式调用Android的基本启动器。我刚刚找到了一个解决方案并进行了更新。纠正错误不是我的目标。感谢您的回复和帮助,或者只是隐式地调用意图,这样Android就可以满足您的要求了?@Machinarius:充其量,您需要使用
createChooser()
,因为我假设OP的主屏幕实现是用户的默认设置,所以只需直接使用
startActivity()
呼叫会将用户直接路由回起始位置。使用
createChooser()
的常用方法的缺点是OP的主屏幕也会出现在列表中,因为它是一个
/
活动,可能会让用户感到困惑。感谢您的帮助!
    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);