Skip to content

Commit 879cca0

Browse files
committed
Support Android 13 DP Betas
1 parent 91615b5 commit 879cca0

File tree

1 file changed

+33
-27
lines changed
  • universalauth-xposed/src/main/java/ax/nd/universalauth/xposed

1 file changed

+33
-27
lines changed

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

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -48,31 +48,23 @@ public class Module implements IXposedHookLoadPackage {
4848
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
4949
// Hook SystemUi
5050
if (Objects.equals(lpparam.packageName, "com.android.systemui")) {
51-
// Hook com.android.systemui.statusbar.phone.StatusBar.start
52-
XposedHelpers.findAndHookMethod(
53-
STATUS_BAR_CLASS,
54-
lpparam.classLoader,
55-
"start",
56-
new XC_MethodHook() {
57-
/**
58-
* Called after the invocation of the method.
59-
*
60-
* <p>You can use {@link MethodHookParam#setResult} and {@link MethodHookParam#setThrowable}
61-
* to modify the return value of the original method.
62-
*
63-
* <p>Note that implementations shouldn't call {@code super(param)}, it's not necessary.
64-
*
65-
* @param param Information about the method call.
66-
* @throws Throwable Everything the callback throws is caught and logged.
67-
*/
68-
@Override
69-
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
70-
// XposedBridge.log("FaceUnlock hook pre-install!");
71-
hookStatusBar(lpparam.classLoader, param);
72-
// XposedBridge.log("FaceUnlock hook installed!");
73-
}
74-
}
75-
);
51+
try {
52+
// Hook com.android.systemui.statusbar.phone.StatusBar.start
53+
Class<?> statusBarClass = lpparam.classLoader.loadClass(STATUS_BAR_CLASS);
54+
hookStatusBar(lpparam, statusBarClass);
55+
} catch(Throwable e) {
56+
// Failed to hook status bar class, we are on Android 13 DP Beta 1+
57+
// Try using another class
58+
try {
59+
Class<?> statusBarClass = lpparam.classLoader.loadClass("com.android.systemui.statusbar.phone.CentralSurfaces");
60+
hookStatusBar(lpparam, statusBarClass);
61+
} catch(Throwable e2) {
62+
XposedBridge.log("Failed to hook status bar! Initial attempt failed with:");
63+
XposedBridge.log(e);
64+
XposedBridge.log("We tried an alternative class but that failed too:");
65+
XposedBridge.log(e2);
66+
}
67+
}
7668

7769
Class<?> kumClazz = lpparam.classLoader.loadClass(KEYGUARD_UPDATE_MONITOR_CLASS);
7870
// Hook com.android.keyguard.KeyguardUpdateMonitor.updateFaceListeningState
@@ -91,6 +83,21 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
9183
}
9284
}
9385

86+
private void hookStatusBar(XC_LoadPackage.LoadPackageParam lpparam, Class<?> statusBarClass) {
87+
XposedHelpers.findAndHookMethod(
88+
statusBarClass,
89+
"start",
90+
new XC_MethodHook() {
91+
@Override
92+
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
93+
// XposedBridge.log("FaceUnlock hook pre-install!");
94+
hookStatusBar(statusBarClass, lpparam.classLoader, param);
95+
// XposedBridge.log("FaceUnlock hook installed!");
96+
}
97+
}
98+
);
99+
}
100+
94101
private void addHookEarlyUnlock(Class<?> kumClazz, XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
95102
Field mStatusBarStateControllerField = asAccessible(kumClazz.getDeclaredField("mStatusBarStateController"));
96103
Field mKeyguardIsVisibleField = asAccessible(kumClazz.getDeclaredField("mKeyguardIsVisible"));
@@ -160,9 +167,8 @@ private String dumpStream(Stream<Object> stream) {
160167
return stream.map(Object::toString).collect(Collectors.joining(",\n"));
161168
}
162169

163-
private void hookStatusBar(ClassLoader classLoader, XC_MethodHook.MethodHookParam param) throws Throwable {
170+
private void hookStatusBar(Class<?> statusBarClass, ClassLoader classLoader, XC_MethodHook.MethodHookParam param) throws Throwable {
164171
Object statusBar = param.thisObject;
165-
Class<?> statusBarClass = classLoader.loadClass(STATUS_BAR_CLASS);
166172
Class<?> systemUiClass;
167173
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) {
168174
// >= Android 13

0 commit comments

Comments
 (0)