public static Activity getActivity() {
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 (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return
null;
}