簡體   English   中英

獲取最近並運行的應用程序列表不是進程

[英]Get Recent and Running application list not processes

我嘗試了很多來獲取最近和正在運行的應用程序(不是進程)的列表但是無法獲得它。

我查看了有關此問題的所有stackoverflow問題,但我得到的關於運行進程和最近任務的唯一答案不是特定應用程序,就像我們在長按主頁按鈕時可以在Samsung Mobile任務管理器中看到的那樣。

我可以通過以下代碼獲取正在運行的進程:

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

for(RunningAppProcessInfo runningProInfo:procInfos){

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

它給出了所有進程的包名,但我只想要我已經啟動的應用程序的包名(Both Recent和Running)。

如何從運行應用程序進程中提取它?

更新:即使使用以下解決方案,我也看不到獲取最近任務名稱的方法,但這將適用於當前正在運行和凍結的任務: getRunningTasks

使用getRunningTasks將返回一個RunningTaskInfo列表,其中包含基本ComponentName ,您可以通過調用getPackageName()來獲取包名稱。

原始答案:

您應該查看getRecentTasks 其功能描述為

返回用戶最近啟動的任務列表,其中最新的是第一個和更早的任務。

注意:此方法僅用於調試和呈現任務管理用戶界面。

這應該會為您提供最近運行或正在運行的所有應用程序的列表。

最近你可以從getRecentTasks獲得它返回RecentTaskInfo

對於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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM