Kotlin - проблема с Broadcast Receiver для SmsReceiver в Android - PullRequest
0 голосов
/ 24 января 2020

Я использую широковещательный прием, как показано ниже:

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> 

Проблема - это метод приемника вещания, который также вызывается, когда у меня есть после отмены регистрации получателя перешел на другой экран при успешной работе моего сервиса. Он вызывает, когда получено любое новое сообщение, которое не должно вызывать, так как я его незарегистрировал.

Как я могу полностью отменить его регистрацию , чтобы он никогда не вызывал снова, когда на устройство получит смс?

Примечание. Я попытался удалить получателя из манифеста. Но с этим я не могу получить отдельное сообщение.

Спасибо.

1 Ответ

2 голосов
/ 24 января 2020

Удалить фильтр намерений из манифеста. Если вы регистрируетесь, отменяете регистрацию по коду, это не обязательно. Как он будет продолжать слушать эту трансляцию на уровне приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...