判断当前界面是否是桌面
来源:互联网 发布:移动互联网大数据平台 编辑:程序博客网 时间:2024/04/27 22:57
在安卓开发当中,很多情况下我们需要判断当前的界面是否为桌面。比如,像360手机卫士悬浮框,当前台没有应用打开的时候,显示悬浮框。如果有应用打开的时候,就关闭悬浮框。这种时候,判断当前的界面是否为桌面就派上用场了。
1. 首先我们要获取所有的正在运行的任务,因为安卓系统是多任务的,所以我们获取的正在运行的任务应该是多个:
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);2.下一步我们得找出前台运行的任务,最前面的就是前台正在运行的任务:
RunningTaskInfo info = rti.get(0);3.接下来我们需要找到所有的桌面应用(第4步即获取所有桌面应用的方法),如果有一个桌面应用在前台运行,那么就表示桌面显示中
return getHomes().contains(info.topActivity.getPackageName());
4.桌面应用的启动必须要满足以下两个条件:1.action为android.intent.action.MAIN 2.category包含android.intent.category.Home ,所以下面的方法就可以获得获得所有属于桌面应用的应用包名称
private List<String> getHomes() {List<String> names = new ArrayList<String>();PackageManager packageManager = this.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 boolean isHome() {// TODO Auto-generated method stubActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);// android系统是支持多任务的,下面的意思就是:找到所有的正在运行的任务,List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);/* * 找到正在运行的任务后,还得找出前台运行的任务,最前面的就是前台正在运行的任务 * RunningTaskInfo info = runningTaskInfos.get(0); */// 如果当前获取的桌面应用程序的包名里面,包含有当前正在前台运行的桌面应用的包名,则表示桌面显示return getHomes().contains(rti.get(0).topActivity.getPackageName());}/* * 获得属于桌面的应用的应用包名称 * * @return 返回包含所有包名的字符串列表 属于桌面应用必须要满足以下两个条件: * 1.action为android.intent.action.MAIN * 2.category包含android.intent.category.Home */private List<String> getHomes() {List<String> names = new ArrayList<String>();PackageManager packageManager = this.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;}
1 0
- 判断当前界面是否是桌面
- [Android]判断当前界面是否是桌面
- 判断当前界面是否是桌面
- Android判断当前界面是否是桌面
- android判断当前界面是否是桌面(主页)
- 【转】android判断当前界面是否是桌面(主页)
- Android判断当前界面是否是桌面(主页)
- Android 判断当前的界面是否是桌面的方法
- android判断当前界面是否是桌面(主页)
- Android 判断当前的界面是否是桌面的方法
- android 小技巧之 --- 判断当前界面是否是桌面
- Android判断当前界面是否为桌面
- Android判断当前界面是否是home界面
- Android 判断当前介面是否是在桌面
- android 如何判断当前页面是否是桌面
- 判断当前界面是不是桌面
- 【eclipse rcp】判断当前线程是否是界面线程
- Symbian:判断当前界面为桌面 .
- PCB设计软件+视频教程 Candece Allegro16.3 PADS9.5 protel99SE
- showDialog方法 deprecated
- 每天一水SGU347
- 通过8个技巧让你成为一个超强的Linux终端用户
- Oracle查询数据
- 判断当前界面是否是桌面
- jquery 插件
- ckeditor用fckeditor的文件管理器实现图片上传
- Gray Code
- hdu 2412 Party at Hali-Bula 树形dp
- RED5&Flex流媒体应用实战开发视频下载
- CentOS-6.3安装配置SVN
- 软件开发的五个步骤
- POJ2250 Compromise,map、dp