【发布时间】: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