Skip to content

Commit 7ac98ec

Browse files
committed
Fix Xposed module
1 parent fecc153 commit 7ac98ec

File tree

1 file changed

+19
-5
lines changed
  • universalauth-xposed/src/main/java/ax/nd/universalauth/xposed

1 file changed

+19
-5
lines changed

universalauth-xposed/src/main/java/ax/nd/universalauth/xposed/Module.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313

1414
import java.lang.reflect.AccessibleObject;
1515
import java.lang.reflect.Method;
16+
import java.util.Arrays;
1617
import java.util.Objects;
18+
import java.util.stream.Collectors;
19+
import java.util.stream.Stream;
1720

1821
import de.robv.android.xposed.IXposedHookLoadPackage;
1922
import de.robv.android.xposed.XC_MethodHook;
@@ -22,6 +25,8 @@
2225

2326
public class Module implements IXposedHookLoadPackage {
2427
private static final String TAG = "XposedUniversalAuth";
28+
private static final String STATUS_BAR_CLASS = "com.android.systemui.statusbar.phone.StatusBar";
29+
private static final String SYSTEM_UI_CLASS = "com.android.systemui.SystemUI";
2530

2631
/**
2732
* This method is called when an app is loaded. It's called very early, even before
@@ -37,7 +42,7 @@ public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Th
3742
if (Objects.equals(lpparam.packageName, "com.android.systemui")) {
3843
// Hook com.android.systemui.statusbar.phone.StatusBar.start
3944
XposedHelpers.findAndHookMethod(
40-
"com.android.systemui.statusbar.phone.StatusBar",
45+
STATUS_BAR_CLASS,
4146
lpparam.classLoader,
4247
"start",
4348
new XC_MethodHook() {
@@ -55,7 +60,7 @@ public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Th
5560
@Override
5661
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
5762
// XposedBridge.log("FaceUnlock hook pre-install!");
58-
hookStatusBar(param);
63+
hookStatusBar(lpparam.classLoader, param);
5964
// XposedBridge.log("FaceUnlock hook installed!");
6065
}
6166
}
@@ -68,10 +73,19 @@ private <T extends AccessibleObject> T asAccessible(T a) {
6873
return a;
6974
}
7075

71-
private void hookStatusBar(XC_MethodHook.MethodHookParam param) throws Throwable {
76+
private String dumpArray(Object[] obj) {
77+
return dumpStream(Arrays.stream(obj));
78+
}
79+
80+
private String dumpStream(Stream<Object> stream) {
81+
return stream.map(Object::toString).collect(Collectors.joining(",\n"));
82+
}
83+
84+
private void hookStatusBar(ClassLoader classLoader, XC_MethodHook.MethodHookParam param) throws Throwable {
7285
Object statusBar = param.thisObject;
73-
Class<?> statusBarClass = statusBar.getClass();
74-
Context context = (Context) asAccessible(statusBarClass.getField("mContext")).get(statusBar);
86+
Class<?> systemUiClass = classLoader.loadClass(SYSTEM_UI_CLASS);
87+
Class<?> statusBarClass = classLoader.loadClass(STATUS_BAR_CLASS);
88+
Context context = (Context) asAccessible(systemUiClass.getDeclaredField("mContext")).get(statusBar);
7589

7690
UnlockMethod method = hookStatusBarBiometricUnlock(statusBar, statusBarClass);
7791

0 commit comments

Comments
 (0)