java - 如何获取自己App的Top Activity名称

标签 java android android-activity service activity-manager

MainActivity 中,我想知道当前在 App 中打开的 Top Activity

对于 pre-lollipop 我使用了以下内容

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 处理它。

最佳答案

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/

关于java - 如何获取自己App的Top Activity名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42019138/

相关文章:

java - Spring Controller 注册了两次

java - 使用 FusedlocationProviderClient Api 在 Android 中进行实时位置跟踪的问题

android - 错误代码-112在Android中意味着什么

android - 如何强制重启服务?

android - 如何防止 fragment 在 Activity 娱乐中触发 onCreate onCreateView

java - 了解 UnsupportedOperationException

java - 使用已处置的观察者不会重新订阅源

android - 将接口(interface)放在 bundle 中以启动新 Activity

java - 将 Activity 类更改为 Fragment

java - 按国家/地区获取日期格式模式