2010-11-18 4 views

Répondre

102

Ajouter la classe ci-dessous Helper:

public class Helper { 

     public static boolean isAppRunning(final Context context, final String packageName) { 
      final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
      final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses(); 
      if (procInfos != null) 
      { 
       for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) { 
        if (processInfo.processName.equals(packageName)) { 
         return true; 
        } 
       } 
      } 
      return false; 
     } 
    } 

Maintenant, vous pouvez vérifier à partir du code ci-dessous si votre application désirée est en cours d'exécution ou non:

if (Helper.isAppRunning(YourActivity.this, "com.your.desired.app")) { 
    // App is running 
} else { 
    // App is not running 
} 
+0

Beau morceau de code, merci! –

+2

Thx, mais comme je le vois à chaque fois que com.android.browser est en cours d'exécution. Quand il est au premier plan, généralement il est en 3ème ou 4ème position de la liste, sinon il est toujours dans la liste. Donc, cette déclaration revient à chaque fois. Comment puis-je résoudre ce problème? Ce n'est que lorsque le processus récent est navigateur qu'il doit écrire "browser is running". – sjor

+1

un champ 'lru' dans le RunningAppProcessInfo vous donnera les informations relatives de l'exécution de l'application pour plus de référence consultez la page doc - http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html – dhaval

-1

Vous pouvez le vérifier par la méthode suivante

public static boolean isRunning(Context ctx) { 
    ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE); 

    List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

    for (ActivityManager.RunningTaskInfo task : tasks) { 
     if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName())) 
      return true; 
    } 
    return false; 
} 
+0

est-ce que ça marche au dessus de kitkat? Si oui alors s'il vous plaît fournir le code .. merci –

Questions connexes