项目需求上碰到个这样的问题,在Service中需要判断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检测当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页面进行不同的操作。下面就粘贴出我封装了一下的方法和大家共享。

/**

*

* @Description : 这个包名的程序是否在运行

* @Method_Name : isRunningApp

* @param context 上下文

* @param packageName 判断程序的包名

* @return 必须加载的权限

*

* @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 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;

}

首先需要注意的是要想进行判断,必须加入注释中的那个权限,不然程序会抛异常的。大体的思路是这样的,获得Activity的管理器,并且通过管理器获得 当前正在运行的100个程序,然后去循环这个结果集,获取在迭代过程中每个程序的基础页面的包名和栈式最顶层的包名,用该包名和我们需要判断传入的包名参 数进行比对,如果找到了就认为该程序正在运行,如果没找到就证明该程序没在运行。

标签:

权限

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐