如何以编程方式在 Android 的启动器之间切换

How to Switching between launchers of Android Programatically

我有两个启动器,Android 启动器和我的自定义启动器。我的自定义启动器是默认 launcher.when android 设备自动启动,它启动我的应用程序。我想要做的是,当用户在我的启动器中按下某个按钮时,我想启动 android 启动器(android 附带)而不要求用户 select 启动器.我想像启动任何其他应用程序一样执行此操作。

android可以吗?

你可以试试

Intent intent=null;
final PackageManager packageManager=getPackageManager();
for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), PackageManager.MATCH_DEFAULT_ONLY))
{ 
    if(!getPackageName().equals(resolveInfo.activityInfo.packageName))  
        //if this activity is not in our activity (in other words, it's another default home screen)
    { 
        intent=packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_CLEAR_TASK
            | Intent.FLAG_ACTIVITY_NEW_TASK);
        break; 
    } 
} 
startActivity(intent);

不幸的是,除非设备已获得 root 权限,否则这是不可能的,在 android 2.2 之前,您可以使用一种方法,但它不再可用。

但如果设备已获得 root 权限或您的应用程序是 "system" 应用程序(位于 /system/apps 文件夹中),则您可以在应用程序启动时禁用其他 Launcher 应用程序并重新启用它们当您的应用程序退出时,这样您的启动器将成为系统中唯一的启动器,因此它将被隐式视为默认启动器(但您需要处理启动器 activity 中的 "back" 按钮、主页按钮会正常工作)