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个程序,然后去循环这个结果集,获取在迭代过程中每个程序的基础页面的包名和栈式最顶层的包名,用该包名和我们需要判断传入的包名参数进行比对,如果找到了就认为该程序正在运行,如果没找到就证明该程序没在运行。我现有的程序就是这样实现的,如有漏洞还请批评指正。沈阳斌子原创。

时间: 2024-11-05 21:36:59

Android 判断程序在手机中是否是活动状态或者正在运行状态的相关文章

Android 推断程序在手机中是否是活动状态或者正在执行状态

沈阳斌子在今天项目需求上碰到个这种问题,在Service中须要推断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检測当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页面进行不同的操作. 以下就粘贴出我封装了一下的方法和大家共享. /** * * @Description : 这个包名的程序是否在执行 * @Method_Name : isRunningApp * @param context 上下文 * @param packageName 推断程序的包名 *

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路

Android应用程序模拟手机按键

记得以前在做一个C++项目时,需要在某一步操作之后人为用代码模拟敲键盘上的回车键(Enter)效果. 出于好奇,这几天研究了一下Android中手机(或平板)上各种按键的键值.模拟方法及最终效果. 1.先来看看Android中对按键和值的定义方式: 1 public static final int KEYCODE_UNKNOWN = 0; 2 /** Key code constant: Soft Left key. */ 3 public static final int KEYCODE_S

android判断设备是手机还是平板method

/** * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android * @param context * @return 平板返回 True,手机返回 False */ public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_

android高仿微信UI点击头像显示大图片效果, Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html http://blog.csdn.net/xiaanming/article/details/18730223

Android判断程序前后台状态

public class AppStatusService extends Service { private static final String TAG = "AppStatusService"; private ActivityManager activityManager; private String packageName; @Override public IBinder onBind(Intent intent) { return null; } @Override

Android应用程序的安装位置

Android应用程序的默认安装位置以及是否可移动取决于开发者在其AndroidManifest.xml中的设置: <manifestxmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:installLocation="auto" android:versionName="1.0"> a

Android应用程序的Activity启动过程简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益 于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信.在前 面的文章Android进程间通信(IPC)机制B

Android应用程序进程启动过程的源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信 机制:这两个特点都是在进程的初始化过程中实现的,本文将详细分析Android应用程序进程创建过程中是如何实现这两个特点的. Android应用程序框架层创建的应用程序进程