package com.mm.android.deviceaddmodule.helper;
|
|
import android.app.Activity;
|
|
import java.lang.reflect.Field;
|
import java.lang.reflect.InvocationTargetException;
|
import java.util.Map;
|
|
public class ActivityHelper {
|
public static Activity getCurrentActivity () {
|
try {
|
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);
|
for (Object activityRecord : activities.values()) {
|
Class activityRecordClass = activityRecord.getClass();
|
Field pausedField = activityRecordClass.getDeclaredField("paused");
|
pausedField.setAccessible(true);
|
if (!pausedField.getBoolean(activityRecord)) {
|
Field activityField = activityRecordClass.getDeclaredField("activity");
|
activityField.setAccessible(true);
|
Activity activity = (Activity) activityField.get(activityRecord);
|
return activity;
|
}
|
}
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
} catch (InvocationTargetException e) {
|
e.printStackTrace();
|
} catch (NoSuchMethodException e) {
|
e.printStackTrace();
|
} catch (NoSuchFieldException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
}
|