package kr.co.tadadang.user.sms import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.util.Log import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.google.android.gms.auth.api.phone.SmsRetriever import com.google.android.gms.common.api.CommonStatusCodes import com.google.android.gms.common.api.Status class SmsRetrieverReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if (SmsRetriever.SMS_RETRIEVED_ACTION == intent?.action) { val extras = intent.extras val status = extras?.get(SmsRetriever.EXTRA_STATUS) as Status when (status.statusCode) { CommonStatusCodes.SUCCESS -> { val message = extras.get(SmsRetriever.EXTRA_SMS_MESSAGE) as String val smsCode = parseSmsCode(message) val localIntent = Intent("SMS_CODE_RECEIVED") localIntent.putExtra("smsCode", smsCode) LocalBroadcastManager.getInstance(context!!).sendBroadcast(localIntent) } CommonStatusCodes.TIMEOUT -> { Log.d("song", "CommonStatusCodes TIMEOUT") } } } } private fun parseSmsCode(message: String): String { val pattern = "\\d{4}".toRegex() val matchResult = pattern.find(message) return matchResult?.value ?: "" } }