如何获取自己的应用程序的热门活动名称

use*_*595 3 java service android android-activity activity-manager

MainActivity我想知道当前Activity在 App 内打开的 Top 。

对于前棒棒糖,我使用了以下内容

ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
Run Code Online (Sandbox Code Playgroud)

在我发现的其他帖子中,我应该使用:

getAppTasks() and gettaskinfo
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何完整的示例来演示如何使用上述内容。任何帮助都是感激的。问候。

编辑:当前代码:

if (Build.VERSION.SDK_INT >= 23) {
      cn = am.getAppTasks().get(0).getTaskInfo().topActivity;
}else{
      cn = am.getRunningTasks(1).get(0).topActivity;
}
Run Code Online (Sandbox Code Playgroud)

am.getRunningTasks 在 API 21 中已弃用。 am.getAppTasks#topActivity 在 API 23 中可用。所以更新的问题是如何为 API 21 和 22 处理它。

Dav*_*vid 6

ActivityManager mgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (mgr != null) {
  List<ActivityManager.AppTask> tasks = mgr.getAppTasks();
  String className;
  if (tasks != null && !tasks.isEmpty()) {
    className = tasks.get(0).getTaskInfo().topActivity.getClassName();
  }
}      
Run Code Online (Sandbox Code Playgroud)

积分转到https://www.intertech.com/Blog/android-5-api-changes-getapptasks/