SMS-подтверждение с помощью Android SmsRetrieverClient не обрабатывает сообщение - PullRequest
0 голосов
/ 26 ноября 2018

Пытался внедрить автоматическое чтение SMS для проверки, выполнив следующие шаги: https://developers.google.com/identity/sms-retriever/request

1) объявлен

lateinit var smsRetrieverClient: SmsRetrieverClient
private lateinit var smsReceiver: SmsBrReceiver

2) Инициализирован и зарегистрирован их при входе в действие. Активность наСоздать

smsRetrieverClient = SmsRetriever.getClient(this)
smsReceiver = SmsBrReceiver()

val intentFilter = IntentFilter()
intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION)
applicationContext.registerReceiver(smsReceiver, intentFilter)

val task = smsRetrieverClient.startSmsRetriever()
task.addOnSuccessListener(OnSuccessListener<Void> {
    smsReceiver.setTimeout()
})
task.addOnFailureListener(OnFailureListener { e ->
    showCodeInput()
})

3) Сделан BroadcastReceiver для SmsRetriever

inner class SmsBrReceiver : BroadcastReceiver() {
    var h = Handler()
    var r: Runnable = Runnable { doTimeout() }

    fun setTimeout() {
        h.postDelayed(r, 600000)
    }

    override fun onReceive(context: Context, intent: Intent?) {

        val action = intent.action

        if (SmsRetriever.SMS_RETRIEVED_ACTION == action) {

            cancelTimeout()
            val extras = intent.extras
            val status = extras!!.get(SmsRetriever.EXTRA_STATUS) as Status
            when (status.statusCode) {
                CommonStatusCodes.SUCCESS -> { // not called

4) SMS приходит в формате

\u200b\u200bPlease enter code: 1111 /appKeyXf56

И ключ приложения в конце SMS совпадает с тем, чтоключ подписи установленного приложения дает для генерации, как описано здесь: https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string

CommonStatusCodes.SUCCESS не вызывается после получения SMS, но CommonStatusCodes.TIMEOUT вызывается через 5 минут.

Чтопропал, отсутствует?На всякий случай объявления gradle для аутентификации телефона:

com.google.android.gms:play-services-auth-api-phone:16.0.0
classpath "com.google.gms:google-services:4.2.0

1 Ответ

0 голосов
/ 29 ноября 2018

Решением было укоротить сообщение, хотя казалось, что оно не превышает 140 байт.После внесения в текст SMS до ~ 30 символов авто-чтение SMS работает без других изменений.

...