Android How to - Determines if this application is top activity








Question

We would like to know how to determines if this application is top activity.

Answer

The following methods get the top Activity from a Context.

The top activity information is stored in the RunningTaskInfo.

/*w  w  w .j a va 2s  .com*/
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
public class Main{
  /**
   * Determines if this application is top activity
   * @param context Context to be examined
   * @return true if this application is a top activity; false otherwise
   */
  public static boolean isTopApplication(Context context) {
    ComponentName activity = getTopActivity(context);
    if (activity == null) {
      return false;
    }
    return activity.getPackageName().equals(context.getApplicationInfo().packageName);
  }
  
  private static ComponentName getTopActivity(Context context) {
    ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
    if (am == null) {
      return null;
    }
    List<RunningTaskInfo> info = am.getRunningTasks(1);
    if (info == null) {
      return null;
    }
    ComponentName activity = info.get(0).topActivity;
    return activity;
  }
}