From 07f042787ef8afd565316c97ebaaaef6c2562e0f Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sat, 21 May 2022 01:50:24 +0800 Subject: [PATCH] Update Demo --- .../yukihookapi/demo_module/data/DataConst.kt | 3 +++ .../yukihookapi/demo_module/hook/HookEntry.kt | 14 +++++++++++++- .../yukihookapi/demo_module/ui/MainActivity.kt | 6 ++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/data/DataConst.kt b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/data/DataConst.kt index 2dcb85dc..80b3f786 100644 --- a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/data/DataConst.kt +++ b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/data/DataConst.kt @@ -27,9 +27,12 @@ */ package com.highcapable.yukihookapi.demo_module.data +import com.highcapable.yukihookapi.hook.xposed.channel.data.ChannelData import com.highcapable.yukihookapi.hook.xposed.prefs.data.PrefsData object DataConst { val TEST_KV_DATA = PrefsData("test_data", "Test data is nothing") + + val TEST_CN_DATA = ChannelData("key_from_host") } \ No newline at end of file diff --git a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt index b5ac99e0..462f1510 100644 --- a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt +++ b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/hook/HookEntry.kt @@ -72,6 +72,16 @@ class HookEntry : IYukiHookXposedInit { // 若无上述需求 - 在宿主重新启动之前建议开启 // 你可以手动调用 [PackageParam.refreshModuleAppResources] 来刷新缓存 isEnableModuleAppResourcesCache = true + // 是否启用 Hook Xposed 模块激活等状态功能 + // 为原生支持 Xposed 模块激活状态检测 - 此功能默认启用 + // 关闭后你将不能再使用 [YukiHookModuleStatus] 中的功能 + // 功能启用后 - 将会在宿主启动时自动 Hook [YukiHookModuleStatus] + isEnableHookModuleStatus = true + // 是否启用当前 Xposed 模块与宿主交互的 [YukiHookDataChannel] 功能 + // 请确保 Xposed 模块的 [Application] 继承于 [ModuleApplication] 才能有效 + // 此功能默认启用 - 关闭后将不会在功能初始化的时候装载 [YukiHookDataChannel] + // 功能启用后 - 将会在宿主启动时自动 Hook [Application] 的生命周期方法进行注册 + isEnableDataChannel = true // 是否启用 [Member] 缓存功能 // 为防止 [Member] 复用过高造成的系统 GC 问题 - 此功能默认启用 // 除非缓存的 [Member] 发生了混淆的问题 - 否则建议启用 @@ -190,7 +200,9 @@ class HookEntry : IYukiHookXposedInit { .setTitle("Hooked") .setMessage("I am hook your toast showing!") .setPositiveButton("OK", null) - .show() + .setNegativeButton("SEND MSG TO MODULE") { _, _ -> + dataChannel.put(DataConst.TEST_CN_DATA, value = "I am host, can you hear me?") + }.show() } } // 注入要 Hook 的方法 diff --git a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/ui/MainActivity.kt b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/ui/MainActivity.kt index ba118c05..4ef976e7 100644 --- a/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/ui/MainActivity.kt +++ b/demo-module/src/main/java/com/highcapable/yukihookapi/demo_module/ui/MainActivity.kt @@ -36,6 +36,7 @@ import androidx.appcompat.app.AppCompatActivity import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.demo_module.data.DataConst import com.highcapable.yukihookapi.demo_module.databinding.ActivityMainBinding +import com.highcapable.yukihookapi.hook.factory.dataChannel import com.highcapable.yukihookapi.hook.factory.isModuleActive import com.highcapable.yukihookapi.hook.factory.isSupportResourcesHook import com.highcapable.yukihookapi.hook.factory.modulePrefs @@ -47,6 +48,11 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) ActivityMainBinding.inflate(layoutInflater).apply { setContentView(root) + dataChannel(packageName = "com.highcapable.yukihookapi.demo_app").with { + wait(DataConst.TEST_CN_DATA) { + Toast.makeText(applicationContext, it, Toast.LENGTH_SHORT).show() + } + } moduleDemoActiveText.text = "Module is Active:$isModuleActive" moduleDemoActiveZhText.text = "Xposed 模块激活状态" moduleDemoFrameworkText.text = "Hook Framework:${YukiHookModuleStatus.executorName}"