Get Recent and Running application list not processes

柔情痞子 提交于 2019-11-26 23:22:58

问题


I tried a lot to get the list of recent and running applications(not processes) but couldn't get it.

I went through all the stackoverflow questions regarding this but the only answer i got about the running processes and recent tasks not the application specific like we can see in Samsung Mobile task manager on long press of home button.

I am able to get the Running processes by this code :

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();

for(RunningAppProcessInfo runningProInfo:procInfos){

        Log.d("Running Processes", "()()"+runningProInfo.processName);
}

It is giving the package names of all processes but i want only the package names of applications that i have launched(Both Recent and Running).

How can I extract that from Running Application Processes?


回答1:


UPDATE: I don't see a way to get the name of the recent tasks even by using the below solution but this will work for the currently running and frozen tasks: getRunningTasks

Using getRunningTasks will return a list of RunningTaskInfo that contain the base ComponentName which you can use to get the package name from by calling getPackageName().

ORIGINAL ANSWER:

You should look into getRecentTasks. Its function is described as

Return a list of the tasks that the user has recently launched, with the most recent being first and older ones after in order.

Note: this method is only intended for debugging and presenting task management user interfaces.

This should get you a list of all the apps that have recently run or are running.




回答2:


Recent you can get from getRecentTasks which returns RecentTaskInfo.




回答3:


For api level < 21

You need this permission:

<uses-permission android:name="android.permission.GET_TASKS" />

And this code:

ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTasks = activityManager.getRecentTasks(10, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
for (ActivityManager.RecentTaskInfo recentTask : recentTasks) {
    try {
        String packageName = recentTask.baseIntent.getComponent().getPackageName();
        ApplicationInfo appInfo = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_META_DATA);
        String label = getPackageManager().getApplicationLabel(appInfo).toString();
        Log.i("APPS", label);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
}


来源:https://stackoverflow.com/questions/12376646/get-recent-and-running-application-list-not-processes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!