要把我們的應用程序作為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界面。
