如何检查特定应用程序是否在Android中运行

如何检查特定应用程序是否在Android中运行,android,Android,我正在开发一个应用程序,需要检查特定的应用程序是否正在运行。我正在使用下面的代码,但它总是使用Toast消息告诉我,正在运行的应用程序不是 正在使用的函数的代码: boolean isNamedProcessRunning(String processName){ if (processName == null) return false; ActivityManager manager = (ActivityManager) this.getSystemServi

我正在开发一个应用程序,需要检查特定的应用程序是否正在运行。我正在使用下面的代码,但它总是使用Toast消息告诉我,正在运行的应用程序不是

正在使用的函数的代码:

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;
 }

通常应用程序进程名类似于包名“com.android.example”,例如“com.android.pandora”。你试过“com.whatsapp”或“com.android.whatsapp”吗


在循环中,打印所有进程,这样可以确保whatsapp进程名称是否正确。

如果要检查应用程序是否正在运行,可以使用以下代码进行检查

    ActivityManager.RunningAppProcessInfo myProcess = new ActivityManager.RunningAppProcessInfo();
    ActivityManager.getMyMemoryState(myProcess);
    Boolean isInBackground = myProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;

尝试打印所有manager.getRunningAppProcess()并检查实际名称是否存在,这非常简单。。。您可以检查您的进程名称:
如果(processName.contains(process.processName))
此API(您经常被警告不要依赖它)现在已弃用,您不应该期望它在最近的版本或将来工作。设计意图是,您不应该能够发现其他正在运行的内容,因为这些信息正被构思不周的应用程序滥用。而且“跑步”在Android上一开始就没有什么意义。
    ActivityManager.RunningAppProcessInfo myProcess = new ActivityManager.RunningAppProcessInfo();
    ActivityManager.getMyMemoryState(myProcess);
    Boolean isInBackground = myProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;