From efb0eede075d162b11668f0a1905aba196da9f10 Mon Sep 17 00:00:00 2001 From: 5ec1cff Date: Fri, 7 Jun 2024 16:38:39 +0800 Subject: [PATCH] telegram: disable audio and video button --- .../five/ec1cff/myinjector/TelegramHandler.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/src/main/java/five/ec1cff/myinjector/TelegramHandler.kt b/app/src/main/java/five/ec1cff/myinjector/TelegramHandler.kt index 55d57eb..f0f1d98 100644 --- a/app/src/main/java/five/ec1cff/myinjector/TelegramHandler.kt +++ b/app/src/main/java/five/ec1cff/myinjector/TelegramHandler.kt @@ -22,10 +22,12 @@ import android.widget.Toast import androidx.core.view.isVisible import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.XC_MethodHook +import de.robv.android.xposed.XC_MethodReplacement import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam import java.util.WeakHashMap +import java.util.concurrent.atomic.AtomicBoolean fun View.findView(predicate: (View) -> Boolean): View? { if (predicate(this)) return this @@ -53,6 +55,33 @@ class TelegramHandler : IXposedHookLoadPackage { // hookUserProfileShowId(lpparam) hookAutoCheckDeleteMessagesOptionAlso(lpparam) hookAutoUncheckSharePhoneNum(lpparam) + hookDisableVoiceVideoButton(lpparam) + } + + private fun hookDisableVoiceVideoButton(lpparam: LoadPackageParam) = runCatching { + val subHookFound = AtomicBoolean(false) + XposedBridge.hookAllConstructors( + XposedHelpers.findClass( + "org.telegram.ui.Components.ChatActivityEnterView", + lpparam.classLoader + ), + object : XC_MethodHook() { + override fun afterHookedMethod(param: MethodHookParam) { + if (subHookFound.get()) return + val audioVideoButtonContainer = + XposedHelpers.getObjectField(param.thisObject, "audioVideoButtonContainer") + ?: return + XposedBridge.hookAllMethods( + audioVideoButtonContainer.javaClass, + "onTouchEvent", + XC_MethodReplacement.returnConstant(true) + ) + subHookFound.set(true) + } + } + ) + }.onFailure { + Log.e(TAG, "hookDisableVoiceVideoButton: failed", it) } private fun hookAutoUncheckSharePhoneNum(lpparam: LoadPackageParam) = runCatching {