android 11系统源码compatibilityinfo.java判断当前是在主桌面
时间: 2023-12-06 16:44:46 浏览: 198
在 Android 11 系统源码中,可以通过 `ActivityTaskManager` 类来获取当前正在运行的任务栈信息,然后判断当前栈顶的任务是否是主桌面。具体实现代码如下:
```java
public static boolean isCurrentTaskHome(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfoList = activityManager.getRunningTasks(1);
if (taskInfoList != null && taskInfoList.size() > 0) {
ComponentName componentName = taskInfoList.get(0).topActivity;
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfo != null && componentName != null) {
return resolveInfo.activityInfo.packageName.equals(componentName.getPackageName())
&& resolveInfo.activityInfo.name.equals(componentName.getClassName());
}
}
return false;
}
```
这个方法会返回一个布尔值,表示当前是否在主桌面。需要注意的是,从 Android 11 开始,`getRunningTasks()` 方法已经被废弃了,可以使用 `getRunningTasks()` 方法代替。
阅读全文