JackWM
JackWM

Reputation: 10555

How to get App info from RecentTaskInfo?

Currently, I can only get the IDs of recent tasks, as below:

final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(Integer.MAX_VALUE, 1);
for (int i = 0; i < recentTasks.size(); i++) 
{
     System.out.println(""+recentTasks.get(i).id);
}

But how to get other info? like package_name, main_activity and so on?

Also I found some IDs are -1. What does it mean? Can we get info of these tasks?

Upvotes: 0

Views: 3071

Answers (2)

Brownsoo Han
Brownsoo Han

Reputation: 4701

here, I used this code for bring running app to foreground from background. I hope this help you...

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
 {  
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE);

RecentTaskInfo recentTaskInfo = null;

for (int i = 0; i < recentTasks.size(); i++) 
{
    if (recentTasks.get(i).baseIntent.getComponent().getPackageName().equals(packageName)) {
       recentTaskInfo = recentTasks.get(i);
       break;
    }
}

if(recentTaskInfo != null && recentTaskInfo.id > -1) {
    activityManager.moveTaskToFront(recentTaskInfo.persistentId, ActivityManager.MOVE_TASK_WITH_HOME);
    return;
}
}

Upvotes: 1

xizzhu
xizzhu

Reputation: 905

-1 means the task is NOT currently running.

You can use recentTaskInfo.baseIntent to get the Intent that was used to launch the task, then e.g. get the package name using intent. getComponent().getPackageName().

Upvotes: 2

Related Questions