如何获取自己应用程序的顶部活动名称

3
MainActivity中,我想知道应用内当前打开的顶层Activity
对于Android 5.0以下版本,我使用以下代码:
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;

在其他帖子中,我发现应该使用以下内容:
getAppTasks() and gettaskinfo

但我找不到任何完整的示例来演示如何使用上面提到的内容。非常感谢您的帮助。祝好。

编辑: 当前代码:

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

am.getRunningTasks在API 21中已经过时。而am.getAppTasks#topActivity在API 23中可用。因此,更新的问题是如何处理API 21和22。

1个回答

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();
  }
}      

感谢https://www.intertech.com/Blog/android-5-api-changes-getapptasks/提供的内容。


此代码仅适用于API 23及以上版本。 - Paritosh
嗨@Paritosh,我在这里得到了topActivity为空。 - Kriti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接