androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED ContextCompat.registerReceiver [广播接收器]中的标志错误

问题描述 投票:0回答:1
       val intentFilter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            ContextCompat.registerReceiver(
                requireActivity(),
                smsBroadcastReceiver,
                intentFilter,
                ContextCompat.RECEIVER_NOT_EXPORTED
            )
        }else {
            requireActivity().registerReceiver(smsBroadcastReceiver, intentFilter)
        }

以上是我的代码。我正在尝试解决 Android 14 设备上发生的崩溃问题。这与 Google 关于广播接收器的政策变化有关。

在我的代码中, Android Studio 在 RECEIVER_NOT_EXPORTED 行上显示错误并显示提示

必须是以下一项或多项: androidx.core.content.ContextCompat.RECEIVER_VISIBLE_TO_INSTANT_APPS, androidx.core.content.ContextCompat.RECEIVER_EXPORTED, androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED

。虽然我已经使用了 androidx.core.content.ContextCompat 中的 RECEIVER_NOT_EXPORTED,但错误并没有消失。

我做错了什么?我应该怎么做才能解决这个问题?

此外,这是来自 firebase 控制台的崩溃消息:

致命异常:java.lang.SecurityException org.samagra.missionPrerna:RECEIVER_EXPORTED 或之一 当接收器未被指定时,应该指定 RECEIVER_NOT_EXPORTED 专门注册用于系统广播

我尝试使用 Context 以及 ContextCompat 类。我的目标和编译版本是 34。 Gradle 有 androidx.core:core-ktx:1.12.0 和 'androidx.appcompat:appcompat:1.6.1' 这是最新版本。 RECEIVER_NOT_EXPORTED 标志仍然显示错误。

android firebase broadcastreceiver android-13
1个回答
0
投票

原来 lint 通过用红色下划线将其显示为错误代码,但当我在设备上运行该代码时,它工作正常并且崩溃消失了。

© www.soinside.com 2019 - 2024. All rights reserved.