Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // BroadcastReceiver
- class SmsListener: BroadcastReceiver() {
- private var smsNotification: SmsNotification? = null
- override fun onReceive(context: Context?, intent: Intent?) {
- if (BuildConfig.DEBUG) Log.v(TAG, "SmsListener - Intercept message")
- intent?.apply {
- when (action) {
- SmsRetriever.SMS_RETRIEVED_ACTION -> {
- val extras = this.extras
- val status = extras?.get(SmsRetriever.EXTRA_STATUS) as Status
- when (status.statusCode) {
- CommonStatusCodes.SUCCESS -> {
- // Get SMS message contents
- val message = extras.get(SmsRetriever.EXTRA_SMS_MESSAGE).toString()
- val code = message.filter { it.isDigit() }
- if (BuildConfig.DEBUG) {
- Log.v(TAG, "message => $message")
- Log.v(TAG, "Code from SMS is => $code")
- }
- Log.v(TAG, "smsNotification => $smsNotification")
- smsNotification?.codeFromSms(code) //Вот здесь smsNotification = null ?????
- }
- CommonStatusCodes.TIMEOUT -> {
- status.status.statusMessage?.let { smsNotification?.error(it) }
- if (BuildConfig.DEBUG) Log.v(TAG, "Status => ${status.status}")
- }
- else -> Unit
- }
- }
- }
- }
- }
- fun setListener(listener: SmsNotification) {
- smsNotification = listener
- }
- }
- //Interface
- interface SmsNotification {
- fun codeFromSms(code: String)
- fun error(message: String)
- }
- //Fragment
- class CodeFragment : Fragment(), SmsNotification {
- @Inject
- lateinit var receiver: SmsListener
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- receiver.setListener(this)
- }
- override fun onStart() {
- super.onStart()
- registerSmsReceiver()
- }
- override fun onPause() {
- super.onPause()
- unregisterSmsReceiver()
- }
- private fun registerSmsReceiver() =
- requireActivity().registerReceiver(receiver, IntentFilter(SMS_RETRIEVER))
- private fun unregisterSmsReceiver() =
- LocalBroadcastManager
- .getInstance(requireContext())
- .unregisterReceiver(receiver)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement