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

问题描述:

嗨它已经2天找到这个简单的问题。如果未将其设置为默认值,我想从我的应用程序即使启动Android自己的启动程序。从我的应用程序中打开android自己的启动器

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

Android的自身发射这个返回空但如果我尝试定制发射是给我成功

+1

我正在开发自定义主屏幕,并且我希望在需要时启动默认主页,并且我面临着同样的问题。 – Palani 2011-12-29 08:32:00

找到解决办法后,调查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); 
} 
+2

我试图使用相同的“com.android.phone”,但由于某种原因它不起作用。任何投入? – 13hsoj 2013-08-12 11:13:11

你肯定被安装在设备上的默认Google Android Launcher?如果不是,那么它确实是NULL

+0

我试图在模拟器和手机上我已经尝试过“com.sonyericsson.home”我的Xperia弧但它给我强制关闭错误甚至不会抛出任何异常。 – 2011-12-15 10:50:42