如何在android lollipop中获取topactivity名称。?

时间:2015-01-13 06:13:09

标签: android android-activity android-5.0-lollipop

您需要找到android lollipop中的热门活动名称。 在我的视频通话重新编码应用程序中,我需要记录Skype视频通话,所以这里我使用了顶级活动方法,当一个特定的顶级活动出现时,我开始录制,但是像棒棒糖一样的Kitkat版本,它的问题是获得顶级活动名称

我使用了以下代码。这里我在棒棒糖版本中使用了getRunningAppProcesses(),但我只获得了包名。在我的项目中,我需要找出顶级活动名称。所以请建议我。

private String getTopActivityName() {
    final ActivityManager am = (ActivityManager) getApplicationContext()
            .getSystemService(Context.ACTIVITY_SERVICE);
    if (am != null) {
        String topActivityName = "";
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
            //For above Kitkat version 
            List<ActivityManager.RunningAppProcessInfo> tasks = am
                    .getRunningAppProcesses();
            if (tasks.get(0).importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                topActivityName = tasks.get(0).processName;
                System.out.println("topActivityName1 : " + topActivityName);
                return topActivityName;
            }
        } else {
            topActivityName = am.getRunningTasks(1).get(0).topActivity
                    .getClassName();
            System.out.println("topActivityName2 : " + topActivityName);
            return topActivityName;
        }
    }
    return null;

}

1 个答案:

答案 0 :(得分:0)

   UsageStatsManager usm = (UsageStatsManager) getSystemService("usagestats");
   long time = System.currentTimeMillis();
   List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
   time - 1000 * 1000, time);
   if (appList != null && appList.size() > 0) {
          SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
          for (UsageStats usageStats : appList) {
                  mySortedMap.put(usageStats.getLastTimeUsed(),
                  usageStats);
          }
          if (!mySortedMap.isEmpty()) {
             return Objects.requireNonNull(mySortedMap.get(
                    mySortedMap.lastKey())).getPackageName();
          }
   }