Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions app/src/main/java/com/parallelc/micts/hooker/CSMSHooker.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.parallelc.micts.hooker

import android.annotation.SuppressLint
import android.content.Context
import android.os.IBinder
import android.util.Log
import com.parallelc.micts.module
import io.github.libxposed.api.XposedInterface.Chain
Expand Down Expand Up @@ -37,10 +36,13 @@ class CSMSHooker {
hooks += module!!.hook(enforcePermission!!).intercept(EnforcePermissionHooker())
hooks += module!!.hook(getContextualSearchPackageName!!).intercept(GetCSPackageNameHooker())

val icsmClass = Class.forName("android.app.contextualsearch.IContextualSearchManager")
val cs = Class.forName("android.os.ServiceManager").getMethod("getService", String::class.java).invoke(null, "contextual_search")
val icsm = Class.forName("android.app.contextualsearch.IContextualSearchManager\$Stub").getMethod("asInterface", IBinder::class.java).invoke(null, cs)
icsmClass.getDeclaredMethod("startContextualSearch", Int::class.java).invoke(icsm, entryPoint)
// The framework manager adapts this call to the platform's Binder API.
// Android 17 added ContextualSearchConfig to the Binder method, while
// this manager entry point remains available on Android 15 through 17.
val managerClass = Class.forName("android.app.contextualsearch.ContextualSearchManager")
val manager = managerClass.getDeclaredConstructor().newInstance()
managerClass.getDeclaredMethod("startContextualSearch", Int::class.java)
.invoke(manager, entryPoint)
}.onFailure { e ->
module!!.log(Log.ERROR, "MiCTS", "invoke startContextualSearch fail", e)
}.also {
Expand Down Expand Up @@ -70,4 +72,4 @@ class CSMSHooker {
}
}
}
}
}
Loading