您需要找到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;
}
答案 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();
}
}