Skip to content

Commit 039bfde

Browse files
author
weishu.tws
committed
[Fix]: do not hook stickylistview below android o.
1 parent 071d59b commit 039bfde

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

exposed-core/src/main/java/me/weishu/exposed/ExposedBridge.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,20 @@ protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Th
329329
param.setResult(FAKE_XPOSED_VERSION);
330330
}
331331
});
332+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
333+
// fix bug on Android O: https://github.com/emilsjolander/StickyListHeaders/issues/477
334+
Class<?> stickyListHeadersClass = XposedHelpers.findClass("se.emilsjolander.stickylistheaders.StickyListHeadersListView", appClassLoader);
335+
DexposedBridge.findAndHookMethod(stickyListHeadersClass, "onSaveInstanceState", new XC_MethodHook() {
336+
@Override
337+
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
338+
super.beforeHookedMethod(param);
339+
param.setResult(AbsSavedState.EMPTY_STATE);
340+
Field mPrivateFlags = XposedHelpers.findField(View.class, "mPrivateFlags");
341+
int flags = mPrivateFlags.getInt(param.thisObject);
342+
mPrivateFlags.set(param.thisObject, flags | 0x00020000);
343+
}
344+
});
345+
}
332346
} catch (Throwable ignored) {
333347
// only support 3.1.5 and above.
334348
try {
@@ -361,18 +375,7 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
361375
}
362376
});
363377

364-
// fix bug on Android O: https://github.com/emilsjolander/StickyListHeaders/issues/477
365-
Class<?> stickyListHeadersClass = XposedHelpers.findClass("se.emilsjolander.stickylistheaders.StickyListHeadersListView", appClassLoader);
366-
DexposedBridge.findAndHookMethod(stickyListHeadersClass, "onSaveInstanceState", new XC_MethodHook() {
367-
@Override
368-
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
369-
super.beforeHookedMethod(param);
370-
param.setResult(AbsSavedState.EMPTY_STATE);
371-
Field mPrivateFlags = XposedHelpers.findField(View.class, "mPrivateFlags");
372-
int flags = mPrivateFlags.getInt(param.thisObject);
373-
mPrivateFlags.set(param.thisObject, flags | 0x00020000);
374-
}
375-
});
378+
376379
}
377380

378381

0 commit comments

Comments
 (0)