-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathEvaluate
51 lines (51 loc) · 2.45 KB
/
Evaluate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Evaluate
Class clazz = Class.forName("android.app.ActivityThread");
java.lang.reflect.Method method = clazz.getDeclaredMethod("currentActivityThread");
method.setAccessible(true);
Object activityThread = method.invoke(null);
java.lang.reflect.Field filed = clazz.getDeclaredField("mActivities");
filed.setAccessible(true);
Object activities = filed.get(activityThread);
java.util.Map<Object, Object> arrayMap = (java.util.Map<Object, Object>) activities;
Object[] result = new Object[8];
result[0] = "All Activity is ";
java.util.LinkedList<android.app.Activity> allActivities = new java.util.LinkedList<>();
result[1] = allActivities;
for (java.util.Map.Entry<Object, Object> entry : arrayMap.entrySet()) {
Object value = entry.getValue();
Class<?> activityClientRecordClass = value.getClass();
java.lang.reflect.Field activityField = activityClientRecordClass.getDeclaredField("activity");
activityField.setAccessible(true);
android.app.Activity activity = (android.app.Activity) activityField.get(value);
java.lang.reflect.Field mResumedField = android.app.Activity.class.getDeclaredField("mResumed");
mResumedField.setAccessible(true);
allActivities.add(activity);
if (mResumedField.get(activity) == Boolean.TRUE) {
result[2] = "Top Activity is ";
result[3] = activity;
android.app.FragmentManager fragmentManager = activity.getFragmentManager();
java.lang.reflect.Field mAddedField = fragmentManager.getClass().getDeclaredField("mAdded");
mAddedField.setAccessible(true);
Object mAdded = mAddedField.get(fragmentManager);
result[4] = "All Fragment is";
if (mAdded == null) {
mAdded = "null";
}
result[5] = mAdded;
result[6] = "All Support Fragment is";
if (activity instanceof androidx.fragment.app.FragmentActivity) {
androidx.fragment.app.FragmentManager supportFragmentManager = ((androidx.fragment.app.FragmentActivity) activity).getSupportFragmentManager();
java.lang.reflect.Field mSupportAddedField = supportFragmentManager.getClass().getDeclaredField("mAdded");
mSupportAddedField.setAccessible(true);
Object mSupportAdded = mSupportAddedField.get(supportFragmentManager);
if (mSupportAdded == null) {
mSupportAdded = "null";
}
result[7] = mSupportAdded;
} else {
result[7] = "null";
}
break;
}
}
return result;