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?¿Cómo obtener la lista de aplicaciones en ejecución?
15
A
Respuesta
9
Puede obtener información sobre la ejecución de procesos utilizando la clase ActivityManager.
11
Usted no puede detectar un lanzamiento de aplicaciones en Android, pero se puede obtener la lista de aplicaciones abiertas actualmente y comprobar si la aplicación que estás buscando es abierto o no utilizando el siguiente código:
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> 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 puede comprobar si la aplicación se está ejecutando en primer plano el uso de 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;
}
2
public static String getActiveApps(Context context) {
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> 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
----------------------- */
}
isSTOPPED
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<ApplicationInfo> 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;
}
+0
Poco redundante, pero funcionó en Android N. –
Cuestiones relacionadas
- 1. Cómo obtener la lista de aplicaciones en ejecución usando PowerShell o VBScript
- 2. Obtener la lista de aplicaciones en ejecución ordenados por último uso
- 3. ¿Cómo obtener una lista de todas las NSWindow abiertas desde todas las aplicaciones en ejecución?
- 4. Obtener lista de aplicaciones de Android instaladas
- 5. Obtener lista de todas las aplicaciones instaladas
- 6. Obtener la lista de procesos en ejecución (Visual C++)
- 7. Applescript: enumere todas las aplicaciones en ejecución
- 8. Mostrar la lista de aplicaciones en ejecución del escritorio usando C#
- 9. obtener lista de aplicaciones instaladas en iphone objetivo-c
- 10. ¿Cómo obtener la lista de tareas programadas y los resultados de la última ejecución en ColdFusion?
- 11. ¿Cómo obtener la NSOperation actualmente en ejecución?
- 12. ¿Cómo obtener la lista de widgets instalados?
- 13. Lista de aplicaciones desplegadas en Apache Tomcat
- 14. ¿Cómo eliminar la aplicación de la lista de aplicaciones recientes?
- 15. ¿Cómo obtener tiempo de ejecución en la consola de rieles?
- 16. ¿Cómo implemento las aplicaciones en ejecución como modo de administrador?
- 17. Drupal: cómo obtener la lista de módulos
- 18. ¿Cómo matar todas las aplicaciones en ejecución en Android?
- 19. ¿Cómo obtener la lista de valores en la cláusula GROUP_BY?
- 20. ¿Cómo puedo obtener la URL del servidor en ejecución
- 21. Cómo verificar la ejecución de aplicaciones en la instancia de AWS EC2
- 22. ¿Cómo obtengo la lista de nombres de proceso en ejecución, en VB.NET?
- 23. Lista de JVM en ejecución en el host local
- 24. Flujo de trabajo personalizado cómo obtener la entidad de ejecución
- 25. Cómo obtener nombres de fondo Ejecutar aplicaciones
- 26. Obtener el número de aplicaciones en la barra de tareas
- 27. Alphabatize lista de aplicaciones instaladas
- 28. cómo obtener una lista secundaria de una lista en ocaml
- 29. Orden de ejecución en la lista de inicialización del constructor
- 30. ¿Cómo obtener el área de ejecución actual?
El primer fragmento de código anterior funciona muy bien para las aplicaciones que se ejecutan en el fondo. Gracias. – mbonness
No funciona en todos los casos. Por ejemplo, abrí Chrome y cerré usando el botón de inicio. Y pude ver "Chrome" en la lista de "historial de aplicaciones"/"aplicaciones en ejecución". Y eliminé cromo de allí. Aún así, el código anterior dice "Chrome" se está ejecutando en segundo plano. – Manu
@Manu Quizás el proceso todavía está allí, entonces? –