如何检查应用程序是否正在运行(Android> 5.1)?
下面的代码在Android 4.4上成功运行,但由于android 5.1 getRunningAppProcesses()只返回自己的进程。我如何检查应用程序是否在Android> 5.1上运行?如何检查应用程序是否正在运行(Android> 5.1)?
static boolean isRun(Context context, String pkg_name) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
if (procInfos == null)
return false;
int i;
for (i = 0; i < procInfos.size(); i++) {
ActivityManager.RunningAppProcessInfo proc = procInfos.get(i);
if (proc.processName.equals(pkg_name))
return true;
}
return false;
}
使用什么来代替getRunningAppProcesses(),适用于Android 5.1及更高版本。
/** * 方法检查,如果应用程序在后台或不 */
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) {
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;
}
问题中加入允许AndroidManifest解决。
<uses-permission android:name="android.permission.REAL_GET_TASKS" />
Android 5.1及更高版本的getRunningAppProcesses()返回大小= 1! –
你想检查什么,你可以详细解释。 –
我想检查带有pkg_name的应用程序是否正在运行。我的问题中的代码在Android 5.1中不起作用。和更高 –
可能重复[如何检查Android的系统版本?](https://*.com/questions/3093365/how-can-i-check-the-system-version-of- android) –
问题是如何确定Android 5.1及以上版本中正在运行的进程列表?什么使用,而不是getRunningAppProcesses()? –
这不是一个重复的实现问题,而不是版本检查! –