从我的应用程序打开Android自己的启动器

时间:2011-12-15 10:42:20

标签: android launcher homescreen package-managers

嗨已经2天了,正在寻找这个简单的问题。我想从我的应用程序EVEN启动Android自己的启动器,如果它没有设置为默认值。

   final PackageManager packageManager=getPackageManager();
   Intent intent = packageManager.getLaunchIntentForPackage("com.android.launcher");

这为Android自己的启动器返回null但是如果我尝试自定义启动器就会成功给我

2 个答案:

答案 0 :(得分:11)

在调查getLaunchIntentForPackage的源代码后找到解决方案。根据文件,

  

当前的实现将首先查看主要活动   类别CATEGORY_INFO,类别中的主要活动的下一个   CATEGORY_LAUNCHER,如果两者都找不到,则返回null。

所以,该函数不会查找CATEGORY_HOME,我按照以下方式重写了它,它工作得很好。

Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_HOME);
intentToResolve.setPackage("com.android.launcher");
ResolveInfo ri = getPackageManager().resolveActivity(intentToResolve, 0);
if (ri != null) 
{
    Intent intent = new Intent(intentToResolve);
    intent.setClassName(ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
}

答案 1 :(得分:1)

您确定设备上安装了默认Google Android Launcher吗?如果没有,那么它真的是NULL

相关问题