首先需要注意的是要想进行判断,必须加入注释中的那个权限,不然程序会抛异常的。大体的思路是这样的,获得Activity的管理器,并且通过管理器获得 当前正在运行的100个程序,然后去循环这个结果集,获取在迭代过程中每个程序的基础页面的包名和栈式最顶层的包名,用该包名和我们需要判断传入的包名参 数进行比对,如果找到了就认为该程序正在运行,如果没找到就证明该程序没在运行。
- /**
- *
- * @Description : 这个包名的程序是否在运行
- * @Method_Name : isRunningApp
- * @param context 上下文
- * @param packageName 判断程序的包名
- * @return 必须加载的权限
- * <uses-permission android:name="android.permission.GET_TASKS" />
- * @return : boolean
- * @Creation Date : 2014-10-31 下午1:14:15
- * @version : v1.00
- * @Author : JiaBin
- * @Update Date :
- * @Update Author : JiaBin
- */
- public static boolean isRunningApp(Context context, String packageName) {
- boolean isAppRunning = false;
- ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- List<RunningTaskInfo> list = am.getRunningTasks(100);
- for (RunningTaskInfo info : list) {
- if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) {
- isAppRunning = true;
- // find it, break
- break;
- }
- }
- return isAppRunning;
- }
来源: http://www.phpxs.com/code/1001849/