Huawei SMS retriever api не работает и устройства Huawei

#huawei-mobile-services #huawei-developers #sms-retriever-api #huawei-account

#huawei-мобильные сервисы #huawei-разработчики #sms-retriever-api #huawei-учетная запись

Вопрос:

Я пытаюсь восстановить OTP на устройстве Huawei. но он не работает.

Я создал приложение в консоли разработчика Huawei со всеми требованиями.

Ниже приведен код, который я использую для получения sms.

 private fun initSmsManager() {

        val task = ReadSmsManager.start(this@MainActivity)

        task.addOnCompleteListener {

            if (task.isSuccessful) {
                // The service is enabled successfully. Continue with the process.
                Toast.makeText(this, "ReadSms service has been enabled.", Toast.LENGTH_LONG).show()
            } else
                Toast.makeText(this, "The service failed to be enabled.", Toast.LENGTH_LONG).show()
        }
        task.addOnSuccessListener(this, OnSuccessListener {
                if(task.isSuccessful){
                    Toast.makeText(this, "ReadSms service has been enabled.", Toast.LENGTH_LONG).show()
                    myReceiver = MyBroadcastReceiver();
                    val intentFilter = IntentFilter(READ_SMS_BROADCAST_ACTION)
                    registerReceiver(myReceiver, intentFilter)
                }
        })
        task.addOnFailureListener(this, OnFailureListener {
            Toast.makeText(this,it.message,Toast.LENGTH_SHORT).show();
        })
    }
 

Широковещательный приемник

 class MyBroadcastReceiver : BroadcastReceiver() {

    companion object {
        val TAG = MyBroadcastReceiver::class.java.simpleName
    }

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

        val bundle = intent!!.extras
        if (bundle != null) {
            val status: Status? = bundle.getParcelable(ReadSmsConstant.EXTRA_STATUS)
            if (status?.statusCode == CommonStatusCodes.TIMEOUT) {

                // Service has timed out and no SMS message that meets the requirement is read. Service ended.
                // doSomethingWhenTimeOut()
            } else if (status?.statusCode == CommonStatusCodes.SUCCESS) {

                if (bundle.containsKey(ReadSmsConstant.EXTRA_SMS_MESSAGE)) {

                    // An SMS message that meets the requirement is read. Service ended.
                    //doSomethingWhenGetMessage(bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE))

                    bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE)?.let {

                        Log.d(TAG, it)

                        val local = Intent()
                        local.action = "service.to.activity.transfer"
                        local.putExtra("sms", it)
                        context!!.sendBroadcast(local)
                    }
                }
            }
        }
    }
}
 

Любая помощь в этом была бы полезной.

Ответ №1:

Пожалуйста, подтвердите следующие пункты:

  1. Проверьте, включена ли трансляция для получения кодов подтверждения SMS. Это можно сделать, выполнив отладку точки останова или записав журналы.
  2. Проверьте, соответствует ли формат SMS-сообщения правилам автоматического чтения SMS-сообщений.

Подробности см. в Документации.

введите описание изображения здесь

Проверьте правильность hash_value поля.

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

Ответ №2:

Весь код работает нормально, он хорошо работает в режиме отладки, когда я создаю выпущенный apk, затем хранилище ключей изменяется, также изменяется хэш для режима выпуска. Если вы знаете что-нибудь о том, как работать в режиме выпуска, пожалуйста, сообщите нам об этом. Возможно, некоторые изменения внесены в учетную запись разработчика Huawei