Я пытался проверить, находится ли активность на переднем или на заднем плане, поэтому я нашел ее с помощью диспетчера активности. Когда мой compileSdkVersion
28, приложение успешно скомпилировано. Когда я запускаю тот же код с compileSdkVersion
29, я получаю ошибку ниже,
The field requires API level 29 (current min is 16): android.app.TaskInfo#topActivity
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class ActivityState {
private Timer timer;
Context cntx;
Session session;
public boolean isAppIsInBackground(Context context) {
cntx = 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; *// this line shows error as "Field requires API level 29 (current min is 16): android.app.TaskInfo#topActivity"*
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
}
return isInBackground;
}
}
Я получаю эту ошибку, когда я устанавливаю compileSdkVersion
в 29.