¿Cómo obtener la lista de aplicaciones en ejecución?

Estoy trabajando en una aplicación que necesita la información de las aplicaciones que se ejecutan en el sistema hasta ahora. ¿Hay una API / método para recuperar ese tipo de información?

No puede detectar el inicio de una aplicación en Android, pero puede obtener la lista de las aplicaciones actualmente abiertas y verificar si la aplicación que está buscando está abierta o no está utilizando el siguiente código:

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List runningAppProcessInfo = am.getRunningAppProcesses(); for (int i = 0; i < runningAppProcessInfo.size(); i++) { if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for")) { // Do your stuff here. } } 

También puedes verificar si la aplicación se está ejecutando en primer plano usando este método

 public static boolean isForeground(Context ctx, String myPackage){ ActivityManager manager = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE); List< ActivityManager.RunningTaskInfo > runningTaskInfo = manager.getRunningTasks(1); ComponentName componentInfo = runningTaskInfo.get(0).topActivity; if(componentInfo.getPackageName().equals(myPackage)) { return true; } return false; } 

Puede obtener información sobre la ejecución de procesos utilizando la clase ActivityManager .

 public static String getActiveApps(Context context) { PackageManager pm = context.getPackageManager(); List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); String value = u.dateStamp(); // basic date stamp value += "---------------------------------\n"; value += "Active Apps\n"; value += "=================================\n"; for (ApplicationInfo packageInfo : packages) { //system apps! get out if (!isSTOPPED(packageInfo) && !isSYSTEM(packageInfo)) { value += getApplicationLabel(context, packageInfo.packageName) + "\n" + packageInfo.packageName + "\n-----------------------\n"; } } return value; //result on my emulator /* 2 Ekim 2017 Pazartesi 14:35:17 --------------------------------- Active Apps ================================= SystemSetting com.xyz.systemsetting ----------------------- myMail com.my.mail ----------------------- X-plore com.lonelycatgames.Xplore ----------------------- Renotify com.liamlang.renotify ----------------------- Mail Box com.mailbox.email ----------------------- */ } 

algunas aplicaciones abiertas

está parado

 private static boolean isSTOPPED(ApplicationInfo pkgInfo) { return ((pkgInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0); } 

isSYSTEM

 private static boolean isSYSTEM(ApplicationInfo pkgInfo) { return ((pkgInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); } 

getApplicationLabel

 public static String getApplicationLabel(Context context, String packageName) { PackageManager packageManager = context.getPackageManager(); List packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); String label = null; for (int i = 0; i < packages.size(); i++) { ApplicationInfo temp = packages.get(i); if (temp.packageName.equals(packageName)) label = packageManager.getApplicationLabel(temp).toString(); } return label; }