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

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://jackyanngo.blog.51cto.com/5263823/1053240

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; 

 

 

本文出自 “JackyAnngo” 博客,请务必保留此出处http://jackyanngo.blog.51cto.com/5263823/1053240

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值