From 9da4743febd956823cfdbc2908ad845fb7cdd8ba Mon Sep 17 00:00:00 2001 From: Blue cat Date: Thu, 24 Aug 2023 19:09:14 +0300 Subject: [PATCH] Fixed context-registered receivers --- .../hook/xposed/channel/YukiHookDataChannel.kt | 14 +++++++++----- .../hook/xposed/parasitic/AppParasitics.kt | 8 ++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt index 5d73cef7..611f77c4 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt @@ -208,11 +208,15 @@ class YukiHookDataChannel private constructor() { internal fun register(context: Context?, packageName: String = context?.packageName ?: "") { if (YukiHookAPI.Configs.isEnableDataChannel.not() || context == null) return receiverContext = context - context.registerReceiver( - handlerReceiver, IntentFilter().apply { - addAction(if (isXposedEnvironment) hostActionName(packageName) else moduleActionName(context)) - } - ) + + val filter = IntentFilter().apply { + addAction(if (isXposedEnvironment) hostActionName(packageName) else moduleActionName(context)) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + context.registerReceiver(handlerReceiver, filter, Context.RECEIVER_EXPORTED) + + } else context.registerReceiver(handlerReceiver, filter) + /** 排除模块环境下模块注册自身广播 */ if (isXposedEnvironment.not()) return nameSpace(context, packageName).with { diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt index c58ef5d2..b54df4e7 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt @@ -299,12 +299,16 @@ internal object AppParasitics { * @param result 回调 - ([Context] 当前实例, [Intent] 当前对象) */ fun IntentFilter.registerReceiver(result: (Context, Intent) -> Unit) { - it.registerReceiver(object : BroadcastReceiver() { + val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if (context == null || intent == null) return result(context, intent) } - }, this) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + it.registerReceiver(receiver, this, Context.RECEIVER_EXPORTED) + + } else it.registerReceiver(receiver, this) } hostApplication = it AppLifecycleCallback.onCreateCallback?.invoke(it)