mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 02:35:40 +08:00
Update Demo
This commit is contained in:
@@ -27,9 +27,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.highcapable.yukihookapi.demo_module.data
|
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
|
import com.highcapable.yukihookapi.hook.xposed.prefs.data.PrefsData
|
||||||
|
|
||||||
object DataConst {
|
object DataConst {
|
||||||
|
|
||||||
val TEST_KV_DATA = PrefsData("test_data", "Test data is nothing")
|
val TEST_KV_DATA = PrefsData("test_data", "Test data is nothing")
|
||||||
|
|
||||||
|
val TEST_CN_DATA = ChannelData<String>("key_from_host")
|
||||||
}
|
}
|
@@ -72,6 +72,16 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
// 若无上述需求 - 在宿主重新启动之前建议开启
|
// 若无上述需求 - 在宿主重新启动之前建议开启
|
||||||
// 你可以手动调用 [PackageParam.refreshModuleAppResources] 来刷新缓存
|
// 你可以手动调用 [PackageParam.refreshModuleAppResources] 来刷新缓存
|
||||||
isEnableModuleAppResourcesCache = true
|
isEnableModuleAppResourcesCache = true
|
||||||
|
// 是否启用 Hook Xposed 模块激活等状态功能
|
||||||
|
// 为原生支持 Xposed 模块激活状态检测 - 此功能默认启用
|
||||||
|
// 关闭后你将不能再使用 [YukiHookModuleStatus] 中的功能
|
||||||
|
// 功能启用后 - 将会在宿主启动时自动 Hook [YukiHookModuleStatus]
|
||||||
|
isEnableHookModuleStatus = true
|
||||||
|
// 是否启用当前 Xposed 模块与宿主交互的 [YukiHookDataChannel] 功能
|
||||||
|
// 请确保 Xposed 模块的 [Application] 继承于 [ModuleApplication] 才能有效
|
||||||
|
// 此功能默认启用 - 关闭后将不会在功能初始化的时候装载 [YukiHookDataChannel]
|
||||||
|
// 功能启用后 - 将会在宿主启动时自动 Hook [Application] 的生命周期方法进行注册
|
||||||
|
isEnableDataChannel = true
|
||||||
// 是否启用 [Member] 缓存功能
|
// 是否启用 [Member] 缓存功能
|
||||||
// 为防止 [Member] 复用过高造成的系统 GC 问题 - 此功能默认启用
|
// 为防止 [Member] 复用过高造成的系统 GC 问题 - 此功能默认启用
|
||||||
// 除非缓存的 [Member] 发生了混淆的问题 - 否则建议启用
|
// 除非缓存的 [Member] 发生了混淆的问题 - 否则建议启用
|
||||||
@@ -190,7 +200,9 @@ class HookEntry : IYukiHookXposedInit {
|
|||||||
.setTitle("Hooked")
|
.setTitle("Hooked")
|
||||||
.setMessage("I am hook your toast showing!")
|
.setMessage("I am hook your toast showing!")
|
||||||
.setPositiveButton("OK", null)
|
.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 的方法
|
// 注入要 Hook 的方法
|
||||||
|
@@ -36,6 +36,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import com.highcapable.yukihookapi.YukiHookAPI
|
import com.highcapable.yukihookapi.YukiHookAPI
|
||||||
import com.highcapable.yukihookapi.demo_module.data.DataConst
|
import com.highcapable.yukihookapi.demo_module.data.DataConst
|
||||||
import com.highcapable.yukihookapi.demo_module.databinding.ActivityMainBinding
|
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.isModuleActive
|
||||||
import com.highcapable.yukihookapi.hook.factory.isSupportResourcesHook
|
import com.highcapable.yukihookapi.hook.factory.isSupportResourcesHook
|
||||||
import com.highcapable.yukihookapi.hook.factory.modulePrefs
|
import com.highcapable.yukihookapi.hook.factory.modulePrefs
|
||||||
@@ -47,6 +48,11 @@ class MainActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
ActivityMainBinding.inflate(layoutInflater).apply {
|
ActivityMainBinding.inflate(layoutInflater).apply {
|
||||||
setContentView(root)
|
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"
|
moduleDemoActiveText.text = "Module is Active:$isModuleActive"
|
||||||
moduleDemoActiveZhText.text = "Xposed 模块激活状态"
|
moduleDemoActiveZhText.text = "Xposed 模块激活状态"
|
||||||
moduleDemoFrameworkText.text = "Hook Framework:${YukiHookModuleStatus.executorName}"
|
moduleDemoFrameworkText.text = "Hook Framework:${YukiHookModuleStatus.executorName}"
|
||||||
|
Reference in New Issue
Block a user