[Android]判断当前界面是否是桌面

1.获取ActivityManager

  
  
  
  
  1. /** 
  2.  * Return PackageManager. 
  3.  *  
  4.  * @param context A Context of the application package implementing this class. 
  5.  * @return a PackageManager instance. 
  6.  */ 
  7. public static ActivityManager getActivityManager(Context context){ 
  8.     return (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
  9.  
2.获取安装的桌面程序。
  
  
  
  
  1. /** 
  2.  * Returns a list of launcher that are running on the device. 
  3.  *  
  4.  * @param context A Context of the application package implementing this class. 
  5.  * @return A list which contains all the launcher package name.If there are no launcher, an empty 
  6.  *         list is returned. 
  7.  */ 
  8. public static List<String> getLaunchers(Context context){ 
  9.     List<String> packageNames = new ArrayList<String>(); 
  10.     PackageManager packageManager = context.getPackageManager(); 
  11.     Intent intent = new Intent(Intent.ACTION_MAIN); 
  12.     intent.addCategory(Intent.CATEGORY_HOME); 
  13.  
  14.     List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
  15.  
  16.     for(ResolveInfo resolveInfo:resolveInfos){ 
  17.         ActivityInfo activityInfo = resolveInfo.activityInfo; 
  18.         if(activityInfo != null) { 
  19.             packageNames.add(resolveInfo.activityInfo.processName); 
  20.             packageNames.add(resolveInfo.activityInfo.packageName); 
  21.         } 
  22.     } 
  23.     return packageNames; 
3.判断桌面程序是否在栈顶,如果在栈顶说明当前界面是桌面。
  
  
  
  
  1. /** 
  2.  * Returns whether the launcher which running on the device is importance foreground. 
  3.  *  
  4.  * @param context A Context of the application package implementing this class. 
  5.  * @return True if the importance of the launcher process is {@link android.app.ActivityManager.RunningAppProcessInfo#IMPORTANCE_FOREGROUND}. 
  6.  *  
  7.  *  
  8.  */ 
  9. public static boolean isLauncherForeground(Context context){ 
  10.     boolean isLauncherForeground = false
  11.     ActivityManager activityManager = getActivityManager(context); 
  12.     List<String> lanuchers = getLaunchers(context); 
  13.     List<RunningTaskInfo> runningTaskInfos =  activityManager.getRunningTasks(1); 
  14.  
  15.     if(lanuchers.contains(runningTaskInfos.get(0).baseActivity.getPackageName())) { 
  16.         isLauncherForeground = true
  17.     } 
  18.  
  19.     return isLauncherForeground; 

 

 

你可能感兴趣的:(android,桌面)