如何检查Android中当前运行的应用程序?

UMA*_*MAR 30 android

我想以编程方式检查android中当前运行的应用程序,类似于如果我们按住HOME按钮它如何显示6个应用程序.

我最感兴趣的是应用程序名称.

Ano*_*oop 50

您可以使用获取当前名称包

ActivityManager am = (ActivityManager) mContext
                .getSystemService(Activity.ACTIVITY_SERVICE);
        String packageName = am.getRunningTasks(1).get(0).topActivity
                .getPackageName();
Run Code Online (Sandbox Code Playgroud)

您可以使用此包名称来获取当前活动的应用程序

  • 需要权限:android.permission.GET_TASKS (13认同)
  • 最新的Android Lollipop API中的getRunningTasks方法已被[截断](http://developer.android.com/reference/android/app/ActivityManager.html).对于另外一种方法,您有什么建议吗? (4认同)

Nam*_* Vu 14

您可以检查列表中每个元素的processName,看看它是否是您正在寻找的进程.您可以使用此代码

boolean isNamedProcessRunning(String processName){
 if (processName == null) 
  return false;

 ActivityManager manager = 
    (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 List<RunningAppProcessInfo> processes = manager.getRunningAppProcesses();
 for (RunningAppProcessInfo process : processes)
 {
    if (processName.equals(process.processName))
    {
        return true;
    }
 }
 return false;
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*ger 11

长按HOME键会显示最近(不一定是正在运行)的任务列表.

ActivityManager有你需要的.看看getRunningAppProcessesgetRunningTasks.

您可以dumpsys activity通过'adb shell' 运行来查看此信息(以及更多信息).

  Running processes (most recent first):
    App  #11: adj=fore /F 43fe7c20 233:com.android.browser/10004 (top-activity)
    App  #10: adj=bak  /B 43dcec80 190:android.process.media/10009 (bg-empty)
    App  # 9: adj=vis  /F 43f495c8 107:com.android.inputmethod.latin/10014 (service)
              com.android.inputmethod.latin.LatinIME<=ProcessRecord{43dbe0e8 59:system/1000}
    PERS # 8: adj=sys  /F 43dbe0e8 59:system/1000 (fixed)
    PERS # 7: adj=core /F 43f534c0 111:com.android.phone/1001 (fixed)
    App  # 6: adj=bak+1/B 43ea1f58 148:android.process.acore/10006 (bg-empty)
    App  # 5: adj=home /B 43f601c0 114:com.android.launcher/10000 (home)
    App  # 4: adj=bak+2/B 43f85128 133:com.android.settings/1000 (bg-empty)
    App  # 3: adj=bak+3/B 43eacae0 223:com.android.music/10029 (bg-empty)
    App  # 2: adj=bak+4/B 43dfc500 206:com.android.mms/10028 (bg-empty)
    App  # 1: adj=bak+5/B 43f8fcd0 166:com.android.alarmclock/10025 (bg-empty)
    App  # 0: adj=bak+6/B 43fcbe50 182:com.android.email/10008 (bg-empty)

  PID mappings:
    PID #59: ProcessRecord{43dbe0e8 59:system/1000}
    PID #107: ProcessRecord{43f495c8 107:com.android.inputmethod.latin/10014}
    PID #111: ProcessRecord{43f534c0 111:com.android.phone/1001}
    PID #114: ProcessRecord{43f601c0 114:com.android.launcher/10000}
    PID #133: ProcessRecord{43f85128 133:com.android.settings/1000}
    PID #148: ProcessRecord{43ea1f58 148:android.process.acore/10006}
    PID #166: ProcessRecord{43f8fcd0 166:com.android.alarmclock/10025}
    PID #182: ProcessRecord{43fcbe50 182:com.android.email/10008}
    PID #190: ProcessRecord{43dcec80 190:android.process.media/10009}
    PID #206: ProcessRecord{43dfc500 206:com.android.mms/10028}
    PID #223: ProcessRecord{43eacae0 223:com.android.music/10029}
    PID #233: ProcessRecord{43fe7c20 233:com.android.browser/10004}
Run Code Online (Sandbox Code Playgroud)