mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Fix YukiHookDataChannel when "android" package is registered cannot callback in Android 13 or latest
This commit is contained in:
@@ -299,6 +299,8 @@ class YukiHookDataChannel private constructor() {
|
||||
/** 发送广播 */
|
||||
(context ?: YukiHookAppHelper.currentApplication())?.sendBroadcast(Intent().apply {
|
||||
action = if (isXposedEnvironment) moduleActionName() else hostActionName(packageName)
|
||||
/** 由于系统框架的包名可能不唯一 - 为防止发生问题不再对系统框架的广播设置接收者包名 */
|
||||
if (packageName != YukiHookBridge.SYSTEM_FRAMEWORK_NAME)
|
||||
setPackage(if (isXposedEnvironment) YukiHookBridge.modulePackageName else packageName)
|
||||
data.takeIf { it.isNotEmpty() }?.forEach {
|
||||
when (it.value) {
|
||||
|
@@ -56,6 +56,7 @@ import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiMemberHook
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiMemberReplacement
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
|
||||
import com.highcapable.yukihookapi.hook.xposed.channel.YukiHookDataChannel
|
||||
import com.highcapable.yukihookapi.hook.xposed.helper.YukiHookAppHelper
|
||||
import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.config.ActivityProxyConfig
|
||||
import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.HandlerDelegate
|
||||
import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.IActivityManagerProxy
|
||||
@@ -68,6 +69,9 @@ import com.highcapable.yukihookapi.hook.xposed.parasitic.activity.delegate.Instr
|
||||
*/
|
||||
internal object AppParasitics {
|
||||
|
||||
/** [YukiHookDataChannel] 是否已经注册 */
|
||||
private var isDataChannelRegistered = false
|
||||
|
||||
/** [Activity] 代理是否已经注册 */
|
||||
private var isActivityProxyRegistered = false
|
||||
|
||||
@@ -230,7 +234,15 @@ internal object AppParasitics {
|
||||
}
|
||||
}, IntentFilter().apply { e.first.forEach { e -> addAction(e) } })
|
||||
}
|
||||
runCatching { YukiHookDataChannel.instance().register(it, packageName) }
|
||||
runCatching {
|
||||
/** 过滤系统框架与一系列服务组件包名不唯一的情况 */
|
||||
if (isDataChannelRegistered ||
|
||||
(YukiHookAppHelper.currentPackageName() == YukiHookBridge.SYSTEM_FRAMEWORK_NAME &&
|
||||
packageName != YukiHookBridge.SYSTEM_FRAMEWORK_NAME)
|
||||
) return
|
||||
YukiHookDataChannel.instance().register(it, packageName)
|
||||
isDataChannelRegistered = true
|
||||
}
|
||||
}
|
||||
}.onFailure { param.throwable = it }
|
||||
}
|
||||
|
Reference in New Issue
Block a user