android activity service package 管理工具类

最近涉及的知识很多是做app的统计的,既然是统计,无外乎是统计自己的行为和其他app的行为。

对用到的activity service package 的操作和管理写了个工具类,部分是copy别人的。以前的代码无法写出是哪里来的了就无从考证了。如果被发现会标上去的偷笑


package com.tv.ui.metro.utils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;

/**
 * 对package,activity,service的一些判断
 * 
 * @author liw
 * 
 */
public class ManagerUtil {

	/**
	 * 指定service的运行状态
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isServiceRunning(Context context, String serviceName) {
		if (serviceName == null) {
			return false;
		}

		ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
		for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
			if (serviceName.equals(service.service.getClassName())) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 获取前台进程的应用包名(一般都不止一个,目前知道的顺序不可预知)
	 * 
	 * @param context
	 * @return
	 */
	public static List
   
   
    
     getCurrentAppPackageName(Context context) {
		ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

		List
    
    
     
      list = new ArrayList
     
     
      
      ();
		
		try {
			List
      
      
       
        appProcessList = activityManager.getRunningAppProcesses();
			for (ActivityManager.RunningAppProcessInfo appProcessInfo : appProcessList) {

				if (appProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
					list.add(appProcessInfo.processName);
//					LogDebugUtil.d("lee", new Date().toLocaleString() + "  foreground  " + appProcessInfo.processName);
					
				}
			}
		} catch (Exception e) {

		}
		return list;

	}

	/**
	 * 运行在眼里的包名 deprecated in api 21
	 * 
	 * @param context
	 * @return
	 */
	@Deprecated
	public static String getTopActivityName(Context context) {
		String topActivityClassName = null;
		ActivityManager activityManager = (ActivityManager) (context
				.getSystemService(android.content.Context.ACTIVITY_SERVICE));
		List
       
       
         runningTaskInfos = activityManager.getRunningTasks(1); if (runningTaskInfos != null) { ComponentName f = runningTaskInfos.get(0).topActivity; topActivityClassName = f.getPackageName(); LogDebugUtil.w("lee", new Date().toLocaleString() + " topActivity " + topActivityClassName); } return topActivityClassName; } /** * 检查包是否存在 * * @param context * @param packageName * @return */ static public boolean checkApplication(Context context, String packageName) { if (packageName == null || "".equals(packageName)) { return false; } try { // ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); return true; } catch (NameNotFoundException e) { return false; } } /** * 判断 activity 是否存在 * * @param context * @param intent * @return */ static public boolean checkActivity2(Context context, Intent intent) { if (context.getPackageManager().resolveActivity(intent, 0) == null) { // 说明系统中不存在这个activity return false; } else { return true; } } /** * 判断 activity 是否存在 * * @param context * @param intent * @return */ static public boolean checkActivity(Context context, Intent intent) { if (intent.resolveActivity(context.getPackageManager()) == null) { // 说明系统中不存在这个activity return false; } else { return true; } } /** * 判断 activity 是否存在 * * @param context * @param intent * @return */ static public boolean checkActivity3(Context context, Intent intent) { List 
        
          list = context.getPackageManager().queryIntentActivities(intent, 0); if (list.size() == 0) { // 说明系统中不存在这个activity return false; } else { return true; } } } 
         
       
      
      
     
     
    
    
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值