在移动开发中,经常遇到要判断当前介面是否是桌面的情况,网上有很多例子,我这里贴出,一则方便自己日后查询,二则方便给需要的码友们看。
Android设备上,判断当前介面是否桌面大致基于以下原理:android的桌面其实是由很多应用组成的,也可以称之为桌面应用,知道这个之后问题就简单了,首先,我们只要得到所有桌面应用的包名;然后再得到当前正在运行的应用的包名,如果当前正在运行的应用的包名是桌面应用包名中的其中一个,则介面处于桌面,否则不是。
下面贴出代码:

/** * 获得属于桌面的应用的应用包名称 * @return 返回包含所有包名的字符串列表 */public static ArrayList<String> getHomePackages(Context context) {ArrayList<String> names = new ArrayList<String>();PackageManager packageManager = context.getPackageManager();//属性Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);for(ResolveInfo ri : resolveInfo){names.add(ri.activityInfo.packageName);}return names;}/** * 判断当前界面是否是桌面 */public static boolean isHome(Context context){ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);String runningPackage = rti.get(0).topActivity.getPackageName();ArrayList<String> desktopAppPackages = getHomePackages(context);//for (int i = 0; i < desktopAppPackages.size(); i++) {//Log.e("桌面包名", desktopAppPackages.get(i) + "-----");//}Log.e("第一个", rti.get(0).topActivity.getPackageName());return desktopAppPackages.contains(runningPackage);}
好了,根据这两个方法,就可以判断当前介面是否是处于桌面了,如果还有其他的方法,欢迎码友们分享出来啊!

更多相关文章

  1. Android多媒体开发 Pro Android(安卓)Media 第二章 创建自定义相
  2. Android进阶——阿里Android开发手册学习笔记(一)
  3. AIDL --- Android中的远程接口[转]
  4. Android菜鸟的成长笔记(4)——你真的理解了吗?
  5. Android研究之英特尔 Android* 开发人员指南上的对等应用详解
  6. android中基于网络和GPS的不同精度定位
  7. 一个现有Android工程作为组件加入到另一个Android工程最简便方法
  8. Android深入学习之各种隐私权限判断和获取方法总结
  9. Android拷贝工程不覆盖原工程的配置方法

随机推荐

  1. 视频播放器
  2. 初入android 下的ndk开发一
  3. 听一名普通android应用开发人员谈:怎样成
  4. android学习日记:关于ActionBar和Menu
  5. Android开发小结Part5:Menu
  6. Handler 引起的内存泄漏
  7. Android图片加载库:最全面解析Glide用法
  8. 将android/ios屏幕投射到windows/mac的良
  9. android实现选择图片并压缩上传的功能
  10. Android开发——Android多进程以及使用场