获取当前运行的应用程

Nar*_*ngh 3 android detect foreground

我如何获得当前正在运行的应用程序?

我想检查应用程序是否正在运行.我使用了以下代码.

       ActivityManager activityManager =
       (ActivityManager)
       this.getSystemService(ACTIVITY_SERVICE );

   PackageManager pm =getPackageManager();
   procInfos = activityManager.getRunningAppProcesses();
Run Code Online (Sandbox Code Playgroud)

但即使我按下主屏幕上的按钮,它也会返回几个应用程序列表.正在运行的应用列表仍在列表中显示它们.但我希望该列表仅显示前台的应用程序.

那么,如何区分前台和后台运行的应用程序?

或者换句话说,如何检测当前前台运行的应用程序,或者未被销毁的应用程序.我不想让后台运行应用程序.

dha*_*007 7

你可以尝试这个代码,它给出了当前活动屏幕的包:

ActivityManager am = (ActivityManager) this
                .getSystemService(ACTIVITY_SERVICE);

// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);

ComponentName componentInfo = taskInfo.get(0).topActivity;
if(!componentInfo.getPackageName().equals("your.package.name"))
{
    //Do your stuff
}
Run Code Online (Sandbox Code Playgroud)

您可能需要该权限

<uses-permission android:name="android.permission.GET_TASKS" />
Run Code Online (Sandbox Code Playgroud)

  • 在API 21中不推荐使用`ActivityManager#getRunningTasks()`,**甚至不再返回正确的结果**(出于安全原因,功能受到限制). (3认同)