字段需要API级别29(当前最小值为16):android.app.TaskInfo#topActivity
我试图检查活动是在前台还是后台,所以我使用活动管理器来查找它。 当my字段需要API级别29(当前最小值为16):android.app.TaskInfo#topActivity,android,android-activitymanager,activity-state,Android,Android Activitymanager,Activity State,我试图检查活动是在前台还是后台,所以我使用活动管理器来查找它。 当mycompileSdkVersion为28时,应用程序编译成功。当我使用compileSdkVersion29运行相同的代码时,我得到以下错误: The field requires API level 29 (current min is 16): android.app.TaskInfo#topActivity import android.app.ActivityManager; import android.cont
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;
}
}
该字段需要API级别29(当前最小值为16):android.app.TaskInfo#topActivity
导入android.app.ActivityManager;
导入android.content.ComponentName;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Build;
导入android.util.Log;
导入java.util.List;
导入java.util.Timer;
导入java.util.TimerTask;
公共类活动状态{
私人定时器;
上下文cntx;
会议;
公共布尔值isAppIsInBackground(上下文){
cntx=上下文;
布尔值isInBackground=true;
ActivityManager am=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
if(Build.VERSION.SDK\u INT>Build.VERSION\u code.KITKAT\u WATCH){
List runningprocesss=am.getrunningappprocesss();
对于(ActivityManager.RunningAppProcessInfo processInfo:RunningProcesss){
if(processInfo.importance==ActivityManager.RunningAppProcessInfo.importance\u前台){
for(字符串activeProcess:processInfo.pkgList){
if(activeProcess.equals(context.getPackageName())){
isInBackground=假;
}
}
}
}
}否则{
List taskInfo=am.getRunningTasks(1);
ComponentName componentInfo=taskInfo.get(0).topActivity;*//此行显示错误为“字段需要API级别29(当前最小值为16):android.app.taskInfo#topActivity”*
if(componentInfo.getPackageName().equals(context.getPackageName())){
isInBackground=假;
}
}
返回背景;
}
}
当我将compileSdkVersion
设置为29时,会出现此错误
taskInfo.get(0).topActivity
此方法添加到API级别29。所以低于29,你不能使用这个
用这个替换你的方法
public boolean isAppIsInBackground(Context context) {
cntx = context;
boolean isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = null; // this line shows error as "Field requires API level 29 (current min is 16): android.app.TaskInfo#topActivity"*
componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
} else 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;
}
}
}
}
}
return isInBackground;
}
public boolean isAppIsInBackground(上下文){
cntx=上下文;
布尔值isInBackground=true;
ActivityManager am=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.Q){
List taskInfo=am.getRunningTasks(1);
ComponentName componentInfo=null;//此行显示错误为“字段需要API级别29(当前最小值为16):android.app.TaskInfo#topActivity”*
componentInfo=taskInfo.get(0).topActivity;
if(componentInfo.getPackageName().equals(context.getPackageName())){
isInBackground=假;
}
}else if(Build.VERSION.SDK\u INT>Build.VERSION\u code.KITKAT\u WATCH){
List runningprocesss=am.getrunningappprocesss();
对于(ActivityManager.RunningAppProcessInfo processInfo:RunningProcesss){
if(processInfo.importance==ActivityManager.RunningAppProcessInfo.importance\u前台){
for(字符串activeProcess:processInfo.pkgList){
if(activeProcess.equals(context.getPackageName())){
isInBackground=假;
}
}
}
}
}
返回背景;
}