1、判断App是否出处于运行状态:
用法:boolean appIsRunning = SystemUtil.isAppRunning(context, mPackageName);
public static boolean isAppRunning(Context context, String packageName) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(100);
if (list.size() <= 0) {
return false;
}
for (ActivityManager.RunningTaskInfo info : list) {
if (info.baseActivity.getPackageName().equals(packageName)) {
return true;
}
}
return false;
}
2、通过包名启动应用:
//通过包名唤起应用
PackageManager packageManager = context.getPackageManager();
Intent launchApp = new Intent();
launchApp = packageManager.getLaunchIntentForPackage(mPackageName);
if (intent == null) {
System.out.println("APP not found!");
}
context.startActivity(launchApp);
3、判断App运行时前台还是后台:
用法:boolean appRunningInBackground = SystemUtil.isAppIsInBackground(context);
/**
* 描述:判断某一应用是否是后台运行
* @author liuxq
* @date 2018/11/22
*/
public static boolean isAppIsInBackground(Context context) {
boolean isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
//适配5.0以上的系统
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
//前台程序
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
isInBackground = false;
}
}
}
}
} else {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
}
return isInBackground;
}
4、将后台应用唤醒至前台应用
还要添加权限
<uses-permission android:name="android.permission.GET_TASKS"/>
if (SystemUtil.isAppIsInBackground(context)) {
LogUtils.d("App:" + context.getPackageName() + "后台运行");
//唤起后台应用至前台
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
am.moveTaskToFront(SafeApplication.APPTaskId, ActivityManager.MOVE_TASK_WITH_HOME);
} else {
LogUtils.d("App:" + context.getPackageName() + "前台运行");
}