133 lines
4.8 KiB
Java
133 lines
4.8 KiB
Java
package com.gh.common.util;
|
|
|
|
import android.Manifest;
|
|
import android.app.ActivityManager;
|
|
import android.app.ActivityManager.RunningAppProcessInfo;
|
|
import android.app.ActivityManager.RunningTaskInfo;
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.support.annotation.RequiresPermission;
|
|
|
|
import java.util.List;
|
|
|
|
public class RunningUtils {
|
|
|
|
/**
|
|
* 判断当前应用程序处于前台还是后台
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static boolean isApplicationBroughtToBackground(Context context) {
|
|
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
|
|
if (!tasks.isEmpty()) {
|
|
ComponentName topActivity = tasks.get(0).topActivity;
|
|
if (!topActivity.getPackageName().equals(context.getPackageName())) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
|
|
}
|
|
|
|
/**
|
|
* 判断当前应用程序处于前台还是后台
|
|
*/
|
|
public static boolean isBackground(Context context) {
|
|
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
|
|
for (RunningAppProcessInfo appProcess : appProcesses) {
|
|
if (appProcess.processName.equals(context.getPackageName())) {
|
|
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 判断当前topactivity是否与传入的相同
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static boolean isEqualsTop(Context context, String activityName) {
|
|
ActivityManager activityManager = (ActivityManager) context
|
|
.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> infos = activityManager.getRunningTasks(100);
|
|
for (RunningTaskInfo info : infos) {
|
|
if (info.topActivity.getClassName().equals(activityName)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 判断当前baseActivity是否与传入的相同
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static boolean isEqualsBase(Context context, String activityName) {
|
|
ActivityManager activityManager = (ActivityManager) context
|
|
.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> infos = activityManager.getRunningTasks(100);
|
|
for (RunningTaskInfo info : infos) {
|
|
if (info.baseActivity.getClassName().equals(activityName)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 判断应用是否正在运行
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static boolean isRunning(Context context) {
|
|
ActivityManager activityManager = (ActivityManager) context
|
|
.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> infos = activityManager.getRunningTasks(100);
|
|
for (RunningTaskInfo info : infos) {
|
|
if (info.topActivity.getPackageName().equals(context.getPackageName())
|
|
&& info.baseActivity.getPackageName().equals(context.getPackageName())) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 获取当前baseActivity
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static String getBaseActivity(Context context) {
|
|
ActivityManager activityManager = (ActivityManager) context
|
|
.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> infos = activityManager.getRunningTasks(100);
|
|
for (RunningTaskInfo info : infos) {
|
|
if (info.baseActivity.getPackageName().equals(context.getPackageName())) {
|
|
return info.baseActivity.getClassName();
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 获取当前topActivity
|
|
*/
|
|
@RequiresPermission(Manifest.permission.GET_TASKS)
|
|
public static String getTopActivity(Context context) {
|
|
ActivityManager activityManager = (ActivityManager) context
|
|
.getSystemService(Context.ACTIVITY_SERVICE);
|
|
List<RunningTaskInfo> infos = activityManager.getRunningTasks(100);
|
|
for (RunningTaskInfo info : infos) {
|
|
if (info.topActivity.getPackageName().equals(
|
|
context.getPackageName())) {
|
|
return info.topActivity.getClassName();
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
}
|