【问题标题】:Kotlin - Broadcast Receiver for SmsReceiver issue in AndroidKotlin - Android 中 SmsReceiver 问题的广播接收器
【发布时间】:2020-01-24 05:33:20
【问题描述】:

我正在使用如下广播接收:

private val mSmsReceiver=SmsReceiver()

/*
* Default Activity life cycle method which registers Broadcast receiver named
* SmsReceiver for the intent filter SMS_RECEIVED.
* */
public override fun onResume() {
    LogUtil.e("<<< onResume MESSAGE", "RECEIVED")
    //if(PermissionUtil.hasPermissions(this@OTPUtilityActivity,READ_SMS)){
    LocalBroadcastManager.getInstance(this).registerReceiver(
        mSmsReceiver,
        IntentFilter("android.provider.Telephony.SMS_RECEIVED")
    )
    super.onResume()
}

我按照上面的方法注册了。

现在,当我在我的网络服务中获得成功时,我将其注销如下:

LocalBroadcastManager.getInstance(this).unregisterReceiver(mSmsReceiver)

是的,我已在清单中为其标记如下:

    <receiver android:name=".ui.core.broadcast_receiver.SmsReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver> 

问题是,当我在取消注册接收器后导航到另一个屏幕以显示我的服务成功时,也会调用广播接收器的方法。 它在收到任何新消息时调用,因为我已取消注册,因此不应调用它。

我怎样才能完全注销它,这样当设备收到任何短信时它就不会再调用了?

注意:我已尝试从 Manifest 中删除接收器。但是,这样我就收不到单条消息了。

谢谢。

【问题讨论】:

    标签: android kotlin broadcastreceiver


    【解决方案1】:

    从清单中删除意图过滤器。如果您注册,从代码中取消注册,那是没有必要的。因为它将继续在应用级别收听该广播。

    【讨论】:

    • 我只需要从 或整个 中删除 吗?
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多