2010-11-18 27 views

答えて

102

はヘルパークラスの下に追加します。ご希望のアプリケーションが作動しているかどうか

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

今、あなたは以下のコードから確認することができます。

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

いいコードです。 –

+2

Thxですが、com.android.browserが実行されるたびに表示されます。それがフォアグランドである場合、一般にリストの3番目または4番目の位置にあります。それ以外の場合はリストに残ります。したがって、毎回このステートメントは真実を返します。どうすればこの問題を解決できますか?最近のプロセスがブラウザである場合のみ、「ブラウザは実行中」と記述する必要があります。 – sjor

+1

RunningAppProcessInfoのフィールド 'lru'は、アプリケーションのランタイムの相対情報を提供します。詳細については、http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html – dhaval

-1

あなたは次のような方法でそれを確認することができます

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

kitkatの上で動作していますか?はいの場合は、コードを入力してください。 –

関連する問題