zoukankan      html  css  js  c++  java
  • Android 推断程序在手机中是否是活动状态或者正在执行状态

    沈阳斌子在今天项目需求上碰到个这种问题,在Service中须要推断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检測当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页面进行不同的操作。

    以下就粘贴出我封装了一下的方法和大家共享。

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

    首先须要注意的是要想进行推断,必须增加凝视中的那个权限。不然程序会抛异常的。大体的思路是这种,获得Activity的管理器。而且通过管理器获得当前正在执行的100个程序,然后去循环这个结果集。获取在迭代过程中每一个程序的基础页面的包名和栈式最顶层的包名。用该包名和我们须要推断传入的包名參数进行比对,假设找到了就觉得该程序正在执行,假设没找到就证明该程序没在执行。我现有的程序就是这样实现的,如有漏洞还请批评指正。沈阳斌子原创。

  • 相关阅读:
    网易数帆实时数据湖 Arctic 的探索和实践
    私有化场景下大规模云原生应用的交付实践
    Apache Kyuubi 在 T3 出行的深度实践
    Win7 32位原版镜像无法安装VMware Tools
    VB.NET代码转C#的方法
    ArcGIS Pro导入OSGB倾斜摄影数据
    基于倾斜摄影测量的三维建模实验
    解决QTTabBar标签不能置顶的问题
    GIS中图斑椭球面积的计算
    ISaveAs导出栅格显示异常
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7076846.html
Copyright © 2011-2022 走看看