56 lines
2.1 KiB
Kotlin
56 lines
2.1 KiB
Kotlin
package com.nothing.camera2magic
|
|
|
|
import android.app.Activity
|
|
import android.app.Application
|
|
import android.content.Context
|
|
import android.widget.Toast
|
|
import com.nothing.camera2magic.hook.SourceManager
|
|
import de.robv.android.xposed.IXposedHookLoadPackage
|
|
import de.robv.android.xposed.XC_MethodHook
|
|
import de.robv.android.xposed.XposedHelpers
|
|
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
|
|
|
|
class MagicHook : IXposedHookLoadPackage {
|
|
init {
|
|
System.loadLibrary("camera3")
|
|
}
|
|
companion object {
|
|
private const val TAG = "[MagicHook]"
|
|
private const val MODULE_PACKAGE_NAME = "com.nothing.camera2magic"
|
|
}
|
|
override fun handleLoadPackage(lpparam: LoadPackageParam) {
|
|
if (lpparam.packageName == MODULE_PACKAGE_NAME) return
|
|
GlobalState.packageName = lpparam.packageName
|
|
|
|
XposedHelpers.findAndHookMethod(Application::class.java,
|
|
"onCreate", object : XC_MethodHook() {
|
|
override fun afterHookedMethod(param: MethodHookParam) {
|
|
GlobalState.appContext = param.thisObject as Context
|
|
//TODO:
|
|
}
|
|
})
|
|
|
|
XposedHelpers.findAndHookMethod(Activity::class.java,
|
|
"onStart", object : XC_MethodHook() {
|
|
override fun afterHookedMethod(param: MethodHookParam) {
|
|
val activity = param.thisObject as Activity
|
|
GlobalState.activityCount ++
|
|
if (GlobalState.activityCount == 1) {
|
|
SourceManager.refreshAndDispatch()
|
|
activity.runOnUiThread {
|
|
val text = "[✨] " + SourceManager.toastMessage
|
|
Toast.makeText(activity, text, Toast.LENGTH_SHORT).show()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
XposedHelpers.findAndHookMethod(Activity::class.java,
|
|
"onStop", object : XC_MethodHook() {
|
|
override fun afterHookedMethod(param: MethodHookParam) {
|
|
GlobalState.activityCount--
|
|
}
|
|
})
|
|
}
|
|
|
|
} |