要把我们的应用程序作为home(launcher应用),只需要在AndroidManifest.xml中添加:
<category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" />
所以如果要获取系统中的launcher应用,就需要通过queryIntentActivities查询category为"android.intent.category.HOME"的应用,具体代码示例如下:
1 public List getLanuchPackageName(){ 2 ArrayList arrayList = new ArrayList(); 3 PackageManager pm = this.mContext.getPackageManager(); // 获得PackageManager对象 4 //把自己的应用程序作为home,即实现按下home键,就会启动改应用程序——launcher。只需要在AndroidManifest.xml中添加: 5 // <category android:name="android.intent.category.HOME" /> 6 // <category android:name="android.intent.category.DEFAULT" /> 7 Intent intent = new Intent("android.intent.action.MAIN"); 8 intent.addCategory("android.intent.category.HOME"); 9 // 通过查询,获得所有ResolveInfo对象. 10 List<ResolveInfo> resolveInfos = pm 11 .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 12 13 try{ 14 for (ResolveInfo reInfo : resolveInfos) { 15 String pkgName = reInfo.activityInfo.packageName; // 获得应用程序的包名 16 arrayList.add(pkgName); 17 Log.d(TAG, "Home package name:" + pkgName); 18 } 19 }catch (Exception e){ 20 Log.d(TAG, "getTopPackageName fail"); 21 } 22 return arrayList; 23 }
如果我们需要判断用户是否处于home界面,就可以使用getRunningAppProcesses等方式获取系统top activity所属应用,然后判断这个应用是否是Home(launcher)应用,如果是Home应用,则说明用户正处于home界面。