Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android棒棒糖中获得topactivity名称。?_Android_Android Activity_Android 5.0 Lollipop - Fatal编程技术网

如何在android棒棒糖中获得topactivity名称。?

如何在android棒棒糖中获得topactivity名称。?,android,android-activity,android-5.0-lollipop,Android,Android Activity,Android 5.0 Lollipop,嗨,需要找出android棒棒糖中的顶级活动名称。 在我的视频通话录制应用程序中,我需要录制skype视频通话,所以这里我使用了顶级活动方法,当某个特定的顶级活动出现在前台时,我开始录制,但在Kitkat版本(如棒棒糖)之上,获取顶级活动名称存在问题 我用了下面的代码。在这里,我在棒棒糖版本中使用了getRunningAppProcesses(),但只得到了包名。在我的项目中,我需要找出最重要的活动名称。所以请推荐我 private String getTopActivityName() {

嗨,需要找出android棒棒糖中的顶级活动名称。 在我的视频通话录制应用程序中,我需要录制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;

}
私有字符串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();
          }
   }