#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:
Пожалуйста, подтвердите следующие пункты:
- Проверьте, включена ли трансляция для получения кодов подтверждения SMS. Это можно сделать, выполнив отладку точки останова или записав журналы.
- Проверьте, соответствует ли формат SMS-сообщения правилам автоматического чтения SMS-сообщений.
Подробности см. в Документации.
Проверьте правильность hash_value
поля.
- Если во время предыдущей проверки не возникает ошибок, не могли бы вы предоставить полную трассировку журнала, тогда я попытаюсь выяснить, что может быть не так в этой проблеме. 🙂
Ответ №2:
Весь код работает нормально, он хорошо работает в режиме отладки, когда я создаю выпущенный apk, затем хранилище ключей изменяется, также изменяется хэш для режима выпуска. Если вы знаете что-нибудь о том, как работать в режиме выпуска, пожалуйста, сообщите нам об этом. Возможно, некоторые изменения внесены в учетную запись разработчика Huawei