Java tutorial
//package com.java2s; import android.app.Activity; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class Main { private static List<Activity> getAllActivitiesHack() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, IllegalAccessException, InvocationTargetException { Class activityThreadClass = Class.forName("android.app.ActivityThread"); Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null); Field activitiesField = activityThreadClass.getDeclaredField("mActivities"); activitiesField.setAccessible(true); Map activities = (Map) activitiesField.get(activityThread); List<Activity> activitiesList = new ArrayList<Activity>(activities.size()); for (Object activityRecord : activities.values()) { Class activityRecordClass = activityRecord.getClass(); Field activityField = activityRecordClass.getDeclaredField("activity"); activityField.setAccessible(true); Activity activity = (Activity) activityField.get(activityRecord); activitiesList.add(activity); } return activitiesList; } }