package com.xorcode.andtweet.util;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import java.util.List;
/**
* Is your application is running in foreground?
*
* @see <a
* href="http://stackoverflow.com/questions/3667022/android-is-application-running-in-background">stackoverflow.com/questions/3667022</a>
*/
public class ForegroundCheckTask extends AsyncTask<Context, Void, Boolean> {
private static final String TAG = ForegroundCheckTask.class.getSimpleName();
@Override
protected Boolean doInBackground(Context... params) {
final Context context = params[0].getApplicationContext();
return isAppOnForeground1(context);
}
private boolean isAppOnForeground1(Context context) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null) {
return false;
}
final String packageName = context.getPackageName();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
&& appProcess.processName.equals(packageName)) {
return true;
}
}
return false;
}
/**
* Is your application is running in foreground?
* @param context
* @return true in a case of error also!
*/
public static boolean isAppOnForeground(Context context) {
boolean is = true;
if (context == null) {
Log.e(TAG, "Context is null.");
} else
try {
is = ((new ForegroundCheckTask().execute(context).get()));
} catch (Exception e) {
// ignore
is = true;
}
return is;
}
}