Я использую широковещательный прием, как показано ниже:
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>
Проблема - это метод приемника вещания, который также вызывается, когда у меня есть после отмены регистрации получателя перешел на другой экран при успешной работе моего сервиса. Он вызывает, когда получено любое новое сообщение, которое не должно вызывать, так как я его незарегистрировал.
Как я могу полностью отменить его регистрацию , чтобы он никогда не вызывал снова, когда на устройство получит смс?
Примечание. Я попытался удалить получателя из манифеста. Но с этим я не могу получить отдельное сообщение.
Спасибо.