在以下文档中:https://developers.google.com/identity/sms-retriever/user-consent/request
据指出,消息只有在满足以下条件时才会触发广播:
但是,没有提到如何处理上述任何一项标准都不满足且未触发广播的情况。我们如何对最终用户进行此操作?
我能够处理成功和超时的情况,处理这种情况将使代码更加用户友好。
switch (smsRetrieverStatus.getStatusCode()) {
case CommonStatusCodes.SUCCESS:
// Get consent intent
Intent consentIntent = extras.getParcelable(SmsRetriever.EXTRA_CONSENT_INTENT);
try {
// Start activity to show consent dialog to user, activity must be started in
// 5 minutes, otherwise you'll receive another TIMEOUT intent
startActivityForResult(consentIntent, SMS_CONSENT_REQUEST);
} catch (ActivityNotFoundException e) {
Log.d("Exception","ActivityNotFound");// Handle the exception ...
}
break;
case CommonStatusCodes.TIMEOUT:
Log.e("Timeout-Error:","Listened for msg for 5minutes");
break;
}发布于 2021-03-03 18:01:52
您可以尝试使用CommonStatusCodes.ERROR,但我不确定这是否会触发时,收到的短信是明确无效的。
一个用户友好的解决方案可能是:设置一个30秒的计时器,例如,当您请求SMS/OTP时立即启动。当倒计时完成后,您将显示一个“重新发送SMS”按钮。因此,如果没有收到/检索SMS,您有一种更友好的方式让用户重试并请求另一条SMS。
https://stackoverflow.com/questions/57287084
复制相似问题