|
|
|
|
@ -48,27 +48,23 @@ public class Init { |
|
|
|
|
get().handler.post(() -> Toast.makeText(context(), msg, Toast.LENGTH_LONG).show()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
SpiderDebug.log(activity.getComponentName().getClassName()); |
|
|
|
|
return activity; |
|
|
|
|
} |
|
|
|
|
public static Activity getActivity() throws Exception { |
|
|
|
|
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); |
|
|
|
|
SpiderDebug.log(activity.getComponentName().getClassName()); |
|
|
|
|
return activity; |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|