获取正在运行的应用、当前应用正在运行的activity
来源:互联网 发布:java语言程序设计 下载 编辑:程序博客网 时间:2024/06/15 23:21
- getForegroundApp - returns the foreground application.
- getActivityForApp - returns the activity of the found app.
- isStillActive - determines if a earlier found app is still the active app.
- isRunningService - a helper function for getForegroundApp
this hopefully answers this issue in all extend (:
private RunningAppProcessInfo getForegroundApp() { RunningAppProcessInfo result=null, info=null; if(mActivityManager==null) mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE); List <RunningAppProcessInfo> l = mActivityManager.getRunningAppProcesses(); Iterator <RunningAppProcessInfo> i = l.iterator(); while(i.hasNext()){ info = i.next(); if(info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && !isRunningService(info.processName)){ result=info; break; } } return result;}private ComponentName getActivityForApp(RunningAppProcessInfo target){ ComponentName result=null; ActivityManager.RunningTaskInfo info; if(target==null) return null; if(mActivityManager==null) mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE); List <ActivityManager.RunningTaskInfo> l = mActivityManager.getRunningTasks(9999); Iterator <ActivityManager.RunningTaskInfo> i = l.iterator(); while(i.hasNext()){ info=i.next(); if(info.baseActivity.getPackageName().equals(target.processName)){ result=info.topActivity; break; } } return result;}private boolean isStillActive(RunningAppProcessInfo process, ComponentName activity){ // activity can be null in cases, where one app starts another. for example, astro // starting rock player when a move file was clicked. we dont have an activity then, // but the package exits as soon as back is hit. so we can ignore the activity // in this case if(process==null) return false; RunningAppProcessInfo currentFg=getForegroundApp(); ComponentName currentActivity=getActivityForApp(currentFg); if(currentFg!=null && currentFg.processName.equals(process.processName) && (activity==null || currentActivity.compareTo(activity)==0)) return true; Slog.i(TAG, "isStillActive returns false - CallerProcess: " + process.processName + " CurrentProcess: " + (currentFg==null ? "null" : currentFg.processName) + " CallerActivity:" + (activity==null ? "null" : activity.toString()) + " CurrentActivity: " + (currentActivity==null ? "null" : currentActivity.toString())); return false;}private boolean isRunningService(String processname){ if(processname==null || processname.isEmpty()) return false; RunningServiceInfo service; if(mActivityManager==null) mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE); List <RunningServiceInfo> l = mActivityManager.getRunningServices(9999); Iterator <RunningServiceInfo> i = l.iterator(); while(i.hasNext()){ service = i.next(); if(service.process.equals(processname)) return true; } return false;}
- 获取正在运行的应用、当前应用正在运行的activity
- android 获取当前正在运行的activity
- 获取当前正在运行的Activity
- 获取当前界面正在当前运行的Activity的名字
- 获取系统正在运行的应用-iOS
- 关闭正在运行的应用
- 查看当前正在运行的Activity列表
- iOS获取正在运行应用
- 获取正在运行的activity的信息
- android获取当前正在运行的栈顶的应用包名
- android获取当前正在运行的栈顶的应用包名
- 获取安卓后台正在运行的应用程序(不包括当前应用)
- Android 5.0以上 获取当前正在运行的应用包名
- Android5.0以上获取正在运行的应用
- 强制关闭正在运行的应用
- 取得正在运行的Activity
- Notification返回到当前正在运行的Activity
- Android -- 获得当前正在运行的activity信息
- Solaris系统SHM共享内存使用方法
- 3.一对一外键双向关联(人对身份证):hibernate.cfg.xml
- 每天笑一笑2012年8月28日
- 敏捷开发“松结对编程”系列之十:L型代码结构(技术篇之一) .
- 给Jquery动态添加的元素添加事件
- 获取正在运行的应用、当前应用正在运行的activity
- Android详细的对话框AlertDialog.Builder使用方法
- 如何开始学习Java
- J2EE项目异常处理
- JLabel、JButton换行问题
- C++中调用exe可执行文件
- APK文件简介 及 解包 打包 工具 介绍
- PHP相关系列 - 对PHP框架的一些看法
- 64位Win7安装Oracle10g+PL SQL注意的问题