/**
* 判断应用在前台
*/
public static boolean isForeground(Context context) {
boolean isForeground = false;
ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
if (activityManager != null) {
ComponentName componentName = activityManager.getRunningTasks(1).get(0).topActivity;
if (componentName != null) {
isForeground = componentName.getPackageName().equals(context.getPackageName());
}
}
if (isForeground) {
isForeground = isForegroundByProcess();
}
return isForeground;
}
/**
* 根据进程判断应用在前台
*/
private static boolean isForegroundByProcess() {
boolean isForeground = true;
String filePath = "/proc/" + android.os.Process.myPid() + "/cgroup";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line = br.readLine();
if (line != null && line.contains("bg_non_interactive")) {
isForeground = false;
}
} catch (IOException e) {
e.printStackTrace();
}
return isForeground;
}
/**
* 切换应用到前台
*/
public static void switchToForeground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfoList = activityManager.getRunningTasks(100);
for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
ComponentName componentName = taskInfo.topActivity;
if (componentName != null && componentName.getPackageName().equals(context.getPackageName())) {
activityManager.moveTaskToFront(taskInfo.id, 0);
break;
}
}
}
参考资料: