first version

This commit is contained in:
Chara White
2023-01-20 02:21:20 +08:00
commit 8c4ca6f206
21 changed files with 1166 additions and 0 deletions

1
app/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

50
app/build.gradle.kts Normal file
View File

@@ -0,0 +1,50 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
compileSdk = 32
defaultConfig {
applicationId = "pub.chara.disablealttab"
minSdk = 30
targetSdk = 32
versionCode = 1
versionName = "1"
}
buildTypes {
named("release") {
isShrinkResources = true
isMinifyEnabled = true
proguardFiles("proguard-rules.pro")
}
}
androidResources {
additionalParameters("--allow-reserved-package-id", "--package-id", "0x45")
}
packagingOptions {
resources {
excludes += "/META-INF/**"
excludes += "/kotlin/**"
excludes += "/*.txt"
excludes += "/*.bin"
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
}
dependencies {
implementation("com.github.kyuubiran:EzXHelper:0.9.2")
compileOnly("de.robv.android.xposed:api:82")
}

1
app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1 @@
-keep class pub.chara.disablealttab.MainHook

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pub.chara.disablealttab">
<application
android:icon="@android:drawable/sym_def_app_icon"
android:label="@string/app_name"
android:roundIcon="@android:drawable/sym_def_app_icon">
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="@string/xposed_desc" />
<meta-data
android:name="xposedminversion"
android:value="93" />
<!-- xposed-scope here -->
<meta-data
android:name="xposedscope"
android:resource="@array/xposedscope" />
</application>
</manifest>

View File

@@ -0,0 +1 @@
pub.chara.disablealttab.MainHook

View File

@@ -0,0 +1,36 @@
package pub.chara.disablealttab
import android.os.Build
import com.github.kyuubiran.ezxhelper.init.EzXHelperInit
import com.github.kyuubiran.ezxhelper.utils.Log
import com.github.kyuubiran.ezxhelper.utils.Log.logexIfThrow
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
import pub.chara.disablealttab.hook.*
private const val PACKAGE_NAME_HOOKED = "android"
private const val TAG = "DisableAltTab"
class MainHook : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (lpparam.packageName == PACKAGE_NAME_HOOKED) {
// Init EzXHelper
EzXHelperInit.initHandleLoadPackage(lpparam)
EzXHelperInit.setLogTag(TAG)
EzXHelperInit.setToastTag(TAG)
initHooks(AltTabHook)
}
}
private fun initHooks(vararg hook: BaseHook) {
hook.forEach {
runCatching {
if (it.isInit) return@forEach
it.init()
it.isInit = true
Log.i("Inited hook: ${it.javaClass.simpleName}")
}.logexIfThrow("Failed init hook: ${it.javaClass.simpleName}")
}
}
}

View File

@@ -0,0 +1,29 @@
package pub.chara.disablealttab.hook
import android.view.KeyEvent
import com.github.kyuubiran.ezxhelper.utils.*
import de.robv.android.xposed.XposedBridge
object AltTabHook : BaseHook() {
override fun init() {
try {
//disable alt-tab
//this works for any android version
findMethod("com.android.server.policy.PhoneWindowManager") {
name == "interceptKeyBeforeDispatching"
}.hookBefore { param ->
run {
val arg1: KeyEvent = param.args[1] as KeyEvent;
// alt-tab
if ((arg1.isAltPressed && arg1.keyCode == 61)) {
param.result = 0L;
}
}
}
XposedBridge.log("MiuiPadMeta: AltTabHook success!")
} catch (e: Throwable) {
XposedBridge.log("MiuiPadMeta: AltTabHook failed!")
XposedBridge.log(e)
}
}
}

View File

@@ -0,0 +1,6 @@
package pub.chara.disablealttab.hook
abstract class BaseHook {
var isInit: Boolean = false
abstract fun init()
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="xposedscope">
<item>android</item>
</string-array>
</resources>

View File

@@ -0,0 +1,4 @@
<resources>
<string name="app_name">MiuiPadMeta</string>
<string name="xposed_desc">A Xposed module to disable Alt-Tab hotkey for generic android devices.</string>
</resources>