如何在android棒棒糖中获得topactivity名称。?
嗨,需要找出android棒棒糖中的顶级活动名称。 在我的视频通话录制应用程序中,我需要录制skype视频通话,所以这里我使用了顶级活动方法,当某个特定的顶级活动出现在前台时,我开始录制,但在Kitkat版本(如棒棒糖)之上,获取顶级活动名称存在问题 我用了下面的代码。在这里,我在棒棒糖版本中使用了getRunningAppProcesses(),但只得到了包名。在我的项目中,我需要找出最重要的活动名称。所以请推荐我如何在android棒棒糖中获得topactivity名称。?,android,android-activity,android-5.0-lollipop,Android,Android Activity,Android 5.0 Lollipop,嗨,需要找出android棒棒糖中的顶级活动名称。 在我的视频通话录制应用程序中,我需要录制skype视频通话,所以这里我使用了顶级活动方法,当某个特定的顶级活动出现在前台时,我开始录制,但在Kitkat版本(如棒棒糖)之上,获取顶级活动名称存在问题 我用了下面的代码。在这里,我在棒棒糖版本中使用了getRunningAppProcesses(),但只得到了包名。在我的项目中,我需要找出最重要的活动名称。所以请推荐我 private String getTopActivityName() {
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;
}
私有字符串getTopActivityName(){
最终ActivityManager am=(ActivityManager)getApplicationContext()
.getSystemService(Context.ACTIVITY\u服务);
如果(am!=null){
字符串topActivityName=“”;
if(Build.VERSION.SDK\u INT>Build.VERSION\u code.KITKAT){
//对于以上Kitkat版本
列出任务=am
.getRunningAppProcesses();
if(tasks.get(0.importance==ActivityManager.RunningAppProcessInfo.importance\u前台){
topActivityName=tasks.get(0).processName;
System.out.println(“topActivityName1:+topActivityName”);
返回topActivityName;
}
}否则{
topActivityName=am.getRunningTasks(1).get(0).topActivity
.getClassName();
System.out.println(“topActivityName 2:+topActivityName”);
返回topActivityName;
}
}
返回null;
}
UsageStatsManager usm=(UsageStatsManager)getSystemService(“usagestats”);
长时间=System.currentTimeMillis();
List appList=usm.queryUsageStats(UsageStatsManager.INTERVAL\u每日,
时间-1000*1000,时间);
if(appList!=null&&appList.size()>0){
SortedMap mySortedMap=newtreemap();
for(UsageStats UsageStats:appList){
mySortedMap.put(usageStats.getLastTimeUsed(),
美国完形填空者);
}
如果(!mySortedMap.isEmpty()){
返回Objects.requirennull(mySortedMap.get(
mySortedMap.lastKey()).getPackageName();
}
}
你需要它做什么?告诉你的应用程序是否在前面?还有其他方法可以实现这一点。@Ridcully,在我的视频通话录制应用程序中,我需要录制skype视频通话,因此我在这里使用了顶级活动方法,当某个特定的顶级活动出现时,我开始录制,但在像棒棒糖这样的Kitkat版本上面,获得顶级活动名称是一个问题。@challa:你能找到解决方案吗?我被困在类似的阶段。我们需要获得一个特定的顶级活动名称来执行一些任务。感谢您的贡献。你能解释一下为什么这个代码能解决这个问题吗?这样,您的答案将对未来的用户更有帮助,并将吸引更多的投票。
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();
}
}