【问题标题】:Get 2nd Recent task (android)获取第二个最近的任务 (android)
【发布时间】:2013-05-24 15:52:45
【问题描述】:

我正在尝试获取第二个最近的应用程序的包名称(而不是当前运行的应用程序)。

现在我已经走到这一步了:

                final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
                final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(20, ActivityManager.RECENT_WITH_EXCLUDED);

                for (int i = 0; i < recentTasks.size(); i++) {

                    Intent baseIntent = recentTasks.get(i).baseIntent;
                    if(baseIntent != null) {

                    Context context = getApplicationContext();
                    CharSequence text = baseIntent.getComponent().getPackageName();

                    int duration = Toast.LENGTH_SHORT;
                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();

                    }

但这会显示所有最近的任务。

如果有人知道如何只显示倒数第二个任务,而不是所有任务,我们将非常感谢您的帮助!

【问题讨论】:

    标签: android task


    【解决方案1】:

    要从 Activity Stack 获取第二个最近的任务,尝试如下:

     List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(2, 
                                             ActivityManager.RECENT_WITH_EXCLUDED);
    
    if(recentTasks.size() >= 1) {
        RecentTaskInfo SecondrecentTask = recentTasks.get(1);
        Intent baseIntent = SecondrecentTask.baseIntent;
        //....do your work here..
    
    }
    

    【讨论】:

    • 感谢您的帮助,但我收到“无效索引 2,大小为 2”有什么想法吗?
    • @Mark029348 :是的,使用 1 而不是 2,因为列表索引从 0 而不是 1 开始
    • @Mark029348 :但是在 getRecentTasks 方法中,如果您只想从 Activity Stack 获取前两个最近的任务,则需要将 2 作为第一个参数传递
    【解决方案2】:

    您正在循环和烘烤,因此您显示了最近任务中存在的所有项目。

    第二项可能是:

    recentTasks.get(1);
    

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      相关资源
      最近更新 更多