【发布时间】:2015-09-10 13:36:26
【问题描述】:
我有两个启动器,Android 启动器和我的自定义启动器。我的自定义启动器是默认启动器。当 android 设备启动时,它会启动我的应用程序。我想要做的是,当用户在我的启动器中按下某个按钮时,我想启动 android 启动器(带有 android)而不要求用户选择启动器。我想像启动任何其他应用程序一样这样做。
安卓可以做到吗?
【问题讨论】:
标签: java android android-launcher
我有两个启动器,Android 启动器和我的自定义启动器。我的自定义启动器是默认启动器。当 android 设备启动时,它会启动我的应用程序。我想要做的是,当用户在我的启动器中按下某个按钮时,我想启动 android 启动器(带有 android)而不要求用户选择启动器。我想像启动任何其他应用程序一样这样做。
安卓可以做到吗?
【问题讨论】:
标签: java android android-launcher
不幸的是,除非设备已植根,否则这是不可能的,在 android 2.2 之前有一种方法可以让你做到这一点,但它不再可用。
但如果设备已root或您的应用是“系统”应用(位于 /system/apps 文件夹中),那么您可以在应用启动时禁用其他 Launcher 应用,并在应用退出时重新启用它们,这样,您的启动器就成为系统中唯一的启动器,因此它将被隐式视为默认启动器(但您需要在启动器活动中处理“返回”按钮,主页按钮可以正常工作)
【讨论】:
你可以试试
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);
【讨论】: