2

我创建了一个用作启动器的应用程序,它按预期工作,但我想让用户能够启动本机 Android 启动器。

我知道 Android Launcher 的包名是com.android.launcher

但是,当我尝试通过调用从这个包中获取启动意图名称时

packageManager.getLaunchIntentForPackage("com.android.launcher");

那是空的。

所以,我不知道如何使用包名来启动它,并且想知道是否有其他方法?

TIA

4

1 回答 1

6

我知道 Android Launcher 的包名是 com.android.launcher

除了可能在也可能不在任何给定设备上。事实上,我预计它可能会出现在百分之几的设备上。大多数制造商用自己的替换库存主屏幕。

我想知道是否可能有一些替代方式?

使用PackageManagerqueryIntentActivities()查找所有支持ACTION_MAIN和的活动CATEGORY_HOME。从列表中删除您的活动。如果只剩下一个,则启动该活动。如果剩下的不止一个,请启动您自己的选择器以显示可用选项。这样,无论存在什么其他主屏幕,您都可以启动它。

更新

给定一个ResolveInfonamedlaunchable和一个ACTION_MAIN/CATEGORY_HOME模板Intentnamed i,要启动该活动,请执行以下操作:

ActivityInfo activity=launchable.activityInfo;
ComponentName name=new ComponentName(activity.applicationInfo.packageName,
                                     activity.name);

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
            Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(name);

startActivity(i);  
于 2012-06-18T20:22:44.257 回答