获取最近和运行的应用程序列表不是进程

我尝试了很多以获取最近运行的应用程序(不是进程)的列表,但无法得到它。

我经历了所有关于这个问题的stackoverflow问题,但是我得到的关于正在运行的进程和最近的任务的唯一答案,并非特定应用程序,例如我们可以在长按主页按钮的三星移动任务管理器中看到。

我能够通过此代码获取正在运行的进程:

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

for(RunningAppProcessInfo runningProInfo:procInfos){

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

它提供所有进程的包名称,但我只想要我已启动的应用程序的包名称(最近和最新)。

我如何从运行应用程序进程中提取?


更新:即使使用下面的解决方案,我也没有看到获取最近任务名称的方法,但是这对于当前正在运行和已冻结的任务有效:getRunningTasks

使用getRunningTasks将返回一个包含基本ComponentNameRunningTaskInfo列表,您可以通过调用getPackageName()来获取包名。

原文答案:

你应该看看getRecentTasks。 其功能描述为

返回用户最近启动的任务列表,其中最近的是第一个和更早的任务。

注意:此方法仅用于调试和显示任务管理用户界面。

这应该为您提供最近运行或正在运行的所有应用程序的列表。


最近你可以从返回RecentTaskInfo的getRecentTasks中获得。


对于api级别<21

您需要此权限:

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

而这个代码:

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();
    }
}
链接地址: http://www.djcxy.com/p/63527.html

上一篇: Get Recent and Running application list not processes

下一篇: The MYSQL "explain query" shows "key" NULL