diff --git a/app/src/main/java/com/shatyuka/zhiliao/Hooks.java b/app/src/main/java/com/shatyuka/zhiliao/Hooks.java index 3491499..5b9ec23 100644 --- a/app/src/main/java/com/shatyuka/zhiliao/Hooks.java +++ b/app/src/main/java/com/shatyuka/zhiliao/Hooks.java @@ -23,6 +23,7 @@ import com.shatyuka.zhiliao.hooks.NavButton; import com.shatyuka.zhiliao.hooks.NavRes; import com.shatyuka.zhiliao.hooks.NextAnswer; +import com.shatyuka.zhiliao.hooks.FullScreen; import com.shatyuka.zhiliao.hooks.RedDot; import com.shatyuka.zhiliao.hooks.SearchAd; import com.shatyuka.zhiliao.hooks.ShareAd; @@ -66,6 +67,7 @@ public class Hooks { new HeadZoneBanner(), new MineHybridView(), new FollowButton(), + new FullScreen(), }; public static void init(final ClassLoader classLoader) { diff --git a/app/src/main/java/com/shatyuka/zhiliao/hooks/FullScreen.java b/app/src/main/java/com/shatyuka/zhiliao/hooks/FullScreen.java new file mode 100644 index 0000000..99941ad --- /dev/null +++ b/app/src/main/java/com/shatyuka/zhiliao/hooks/FullScreen.java @@ -0,0 +1,37 @@ +package com.shatyuka.zhiliao.hooks; + +import com.shatyuka.zhiliao.Helper; + +import de.robv.android.xposed.XC_MethodHook; +import de.robv.android.xposed.XposedHelpers; + +public class FullScreen implements IHook { + static Class ClearScreenHelper_lambda; + + @Override + public String getName() { + return "禁止进入全屏模式"; + } + + @Override + public void init(ClassLoader classLoader) throws Throwable { + try { + ClearScreenHelper_lambda = classLoader.loadClass("com.zhihu.android.feature.short_container_feature.ui.widget.toolbar.clearscreen.d$c"); + } catch (ClassNotFoundException ignored) { + } + } + + @Override + public void hook() throws Throwable { + if (ClearScreenHelper_lambda != null) { + XposedHelpers.findAndHookMethod(ClearScreenHelper_lambda, "invoke", new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) { + if (Helper.prefs.getBoolean("switch_fullscreen", false)) { + param.setResult(null); + } + } + }); + } + } +} diff --git a/app/src/main/java/com/shatyuka/zhiliao/hooks/ZhihuPreference.java b/app/src/main/java/com/shatyuka/zhiliao/hooks/ZhihuPreference.java index c0288ea..8cef249 100644 --- a/app/src/main/java/com/shatyuka/zhiliao/hooks/ZhihuPreference.java +++ b/app/src/main/java/com/shatyuka/zhiliao/hooks/ZhihuPreference.java @@ -492,6 +492,7 @@ protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { setIcon.invoke(findPreference.invoke(thisObject, "switch_colormode"), Helper.modRes.getDrawable(R.drawable.ic_color)); setIcon.invoke(switch_tag, Helper.modRes.getDrawable(R.drawable.ic_label)); setIcon.invoke(findPreference.invoke(thisObject, "switch_statusbar"), Helper.modRes.getDrawable(R.drawable.ic_fullscreen)); + setIcon.invoke(findPreference.invoke(thisObject, "switch_fullscreen"), Helper.modRes.getDrawable(R.drawable.ic_fullscreen_exit)); setIcon.invoke(switch_thirdpartylogin, Helper.modRes.getDrawable(R.drawable.ic_login)); setIcon.invoke(switch_livebutton, Helper.modRes.getDrawable(R.drawable.ic_live_tv)); setIcon.invoke(switch_reddot, Helper.modRes.getDrawable(R.drawable.ic_mark_chat_unread)); diff --git a/app/src/main/res/drawable/ic_fullscreen_exit.xml b/app/src/main/res/drawable/ic_fullscreen_exit.xml new file mode 100644 index 0000000..1c2e25f --- /dev/null +++ b/app/src/main/res/drawable/ic_fullscreen_exit.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/xml/preferences_zhihu.xml b/app/src/main/res/xml/preferences_zhihu.xml index 431a77c..dfc37a5 100644 --- a/app/src/main/res/xml/preferences_zhihu.xml +++ b/app/src/main/res/xml/preferences_zhihu.xml @@ -143,6 +143,12 @@ android:key="switch_statusbar" android:title="状态栏沉浸" android:summary="沉浸式状态栏"/> +