Androidが現在置かれているインタフェースがホームデスクトップであるかどうかを判断する方法

1748 ワード

この例では、Androidが現在置かれているインタフェースがホームホームデスクトップであるかどうかを判断する方法について説明します.皆さんの参考にしてください.具体的な実現方法は以下の通りである.

/** 
*                 
* @return                
*/ 
private List getHomes() { 
  List names = new ArrayList(); 
  PackageManager packageManager = this.getPackageManager(); 
  //   
  Intent intent = new Intent(Intent.ACTION_MAIN);
  intent.addCategory(Intent.CATEGORY_HOME); 
  List resolveInfo = packageManager.queryIntentActivities(intent, 
    PackageManager.MATCH_DEFAULT_ONLY); 
  for(ResolveInfo ri : resolveInfo){ 
   names.add(ri.activityInfo.packageName); 
   Log.i("zhangyinfu PinyinIME.java", "packageName =" + ri.activityInfo.packageName);
  } 
  return names;
}

分析:
1)現在のインタフェースを判断する以上,現在のRunningTasksのうちの1番目を判断する.
2)Activity Managerを導入してRunningTasksを取得する;
3)RunningTasksのtopActivityのPackageNameを取り出す.
4)最後に最初のステップで得たリストと比較すればよい!
5)関連権限の追加が必要

    
 

/** 
*             
*/ 
public boolean isHome(){ 
  ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
  List rti = mActivityManager.getRunningTasks(1);
  List strs = getHomes();
  if(strs != null && strs.size() > 0){
   return strs.contains(rti.get(0).topActivity.getPackageName());
  }else{
   return false;
  }
}

皆さんのAndroidプログラムの設計に役立つことを願っています.