如何以编程方式在 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" 按钮、主页按钮会正常工作)
我有两个启动器,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" 按钮、主页按钮会正常工作)