Search This Blog

Wednesday, April 20, 2016

ACTIVITY - HAM GETACTIVITY HIEN TAI - LAY ACTIVITY CURRENT

public static Activity getActivity()  {
    Class activityThreadClass = null;
    try {
        activityThreadClass = Class.forName("android.app.ActivityThread");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    Object activityThread = null;
    try {
        activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    }
    Field activitiesField = null;
    try {
        activitiesField = activityThreadClass.getDeclaredField("mActivities");
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    }
    activitiesField.setAccessible(true);
    HashMap activities = null;
    try {
        activities = (HashMap) activitiesField.get(activityThread);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    for (Object activityRecord : activities.values()) {
        Class activityRecordClass = activityRecord.getClass();
        Field pausedField = null;
        try {
            pausedField = activityRecordClass.getDeclaredField("paused");
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        pausedField.setAccessible(true);
        try {
            if (!pausedField.getBoolean(activityRecord)) {
                Field activityField = activityRecordClass.getDeclaredField("activity");
                activityField.setAccessible(true);
                activity = (Activity) activityField.get(activityRecord);

            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }
    return activity;
}

No comments:

Post a Comment