Fix YukiHookDataChannel not in current Activity received broadcast bug and changed "wait" method params

This commit is contained in:
2022-05-27 01:24:23 +08:00
parent 1f132ff8bd
commit 960fd67cc3
5 changed files with 114 additions and 35 deletions

View File

@@ -21,13 +21,17 @@ class YukiHookDataChannel private constructor()
### NameSpace [class]
```kotlin
inner class NameSpace internal constructor(private val context: Context?, private val packageName: String)
inner class NameSpace internal constructor(private val context: Context?, private val packageName: String, private val isSecure: Boolean)
```
**变更记录**
`v1.0.88` `新增`
`v1.0.90` `修改`
新增 `isSecure` 参数
**功能描述**
> `YukiHookDataChannel` 命名空间。
@@ -85,17 +89,21 @@ fun put(key: String)
#### wait [method]
```kotlin
fun <T> wait(key: String, value: T?, result: (value: T) -> Unit)
fun <T> wait(key: String, result: (value: T) -> Unit)
```
```kotlin
fun <T> wait(data: ChannelData<T>, value: T?, result: (value: T) -> Unit)
fun <T> wait(data: ChannelData<T>, result: (value: T) -> Unit)
```
**变更记录**
`v1.0.88` `新增`
`v1.0.90` `修改`
移除默认值 `value`
**功能描述**
> 获取键值数据。

View File

@@ -120,7 +120,7 @@ Hook 目标方法、构造方法时发生错误。
**解决方案**
此问题通常由 Hook Framework 产生,请检查对应的日志内容,若问题持续出现请携带完整日志进行反馈。
此问题通常由 Hook Framework 产生,请检查对应的日志内容,若问题持续出现请携带详细日志进行反馈。
!> `loggerE` Hooked Member with a finding error by **CLASS**
@@ -432,6 +432,26 @@ Resources 的 Hook 并非类似方法的 Hook其必须拥有完整的名称
这是一个异常汇总,请自行向下查看日志具体的异常是什么,例如找不到 Resources Id 的问题。
!> `loggerE` Received action "**ACTION**" failed
**异常原因**
使用 `YukiHookDataChannel` 时回调广播事件异常。
**解决方案**
一般情况下,此错误基本上不会发生,一旦发生错误,排除自身代码的问题后,请携带详细日志进行反馈。
!> `loggerE` Failed to sendBroadcast like "**KEY**", because got null context in "**PACKAGENAME**"
**异常原因**
使用 `YukiHookDataChannel` 时发送广播取到了空的上下文实例。
**解决方案**
一般情况下,此错误基本上不会发生,在最新版本中已经修复宿主使用时可能发生的问题,若最新版本依然发生错误,排除自身代码的问题后,请携带详细日志进行反馈。
## 阻断异常
> 这些异常会直接导致 APP 停止运行(FC),同时会在控制台打印 `E` 级别的日志,还会造成 Hook 进程“死掉”。
@@ -524,6 +544,16 @@ class MyApplication : Application() {
你只能在 [作为 Xposed 模块使用](config/xposed-using) 时使用 `YukiHookDataChannel`
!> `IllegalStateException` YukiHookDataChannel only support used on an Activity, but this current context is "**CLASSNAME**"
**异常原因**
在模块的非 `Activity` 环境中使用了 `YukiHookDataChannel`
**解决方案**
你只能在 `Activity``Fragment` 中使用 `YukiHookDataChannel`
!> `IllegalStateException` Xposed modulePackageName load failed, please reset and rebuild it
**异常原因**

View File

@@ -1135,7 +1135,7 @@ dataChannel.checkingVersionEquals { isEquals ->
详情请参考 [YukiHookDataChannel](api/document?id=yukihookdatachannel-class)。
### 重复创建回调事件的规则
### 回调事件响应的规则
!> 在模块和宿主中,每一个 `dataChannel` 对应的 `key` 的回调事件**都不允许重复创建**,若重复,之前的回调事件会被新增加的回调事件替换,若在模块中使用,在同一个 `Activity` 中不可以重复,不同的 `Activity` 中相同的 `key` 允许重复。
@@ -1177,8 +1177,14 @@ class OtherActivity : AppCompatActivity() {
在上述示例中,回调事件 A 会被回调事件 B 替换掉,回调事件 C 的 `key` 不与其它重复,回调事件 D 在另一个 Activity 中,所以最终回调事件 B、C、D 都可被创建成功。
## 宿主生命周期扩展功能
!> 一个相同 `key` 的回调事件只会回调当前模块正在显示的 `Activity` 中注册的回调事件,例如上述中的 `test_key`,如果 `OtherActivity` 正在显示,那么 `MainActivity` 中的 `test_key` 就不会被回调。
!> 请特别注意,相同的 `key` 在同一个 `Activity` 不同的 `Fragment` 中注册 `dataChannel`,它们依然会在当前 `Activity` 中同时被回调。
!> 在模块中,你只能使用 `Activity``Context` 注册 `dataChannel`,你不能在 `Application` 以及 `Service` 等地方使用 `dataChannel`,若要在 `Fragment` 中使用 `dataChannel`,请使用 `activity?.dataChannel(...)`
## 宿主生命周期扩展功能
> 这是一个自动 Hook 宿主 APP 生命周期的扩展功能。
### 监听生命周期