Android 在SMS用户同意API的情况下,由于未满足消息标准而未触发广播时,如何处理错误情况?

Android 在SMS用户同意API的情况下,由于未满足消息标准而未触发广播时,如何处理错误情况?,android,google-api,google-developers-console,sms-retriever-api,Android,Google Api,Google Developers Console,Sms Retriever Api,在以下文件中: 声明只有在满足以下条件时,消息才会触发广播: 消息包含一个4-10个字符的字母数字字符串,带有at 至少一个数字 这条信息是由一个不属于你的电话号码发送的 在用户的联系人中 如果您指定了发件人的电话号码, 这条消息是由那个号码发送的 但是,没有提到如何处理不满足上述任何标准且未触发广播的情况。我们如何向最终用户进行此操作 我能够处理成功和超时情况,处理这种情况会使代码更加用户友好 switch (smsRetrieverStatus.getStatusCode()) {

在以下文件中:

声明只有在满足以下条件时,消息才会触发广播:

  • 消息包含一个4-10个字符的字母数字字符串,带有at
    至少一个数字
  • 这条信息是由一个不属于你的电话号码发送的 在用户的联系人中
  • 如果您指定了发件人的电话号码, 这条消息是由那个号码发送的
  • 但是,没有提到如何处理不满足上述任何标准且未触发广播的情况。我们如何向最终用户进行此操作

    我能够处理成功和超时情况,处理这种情况会使代码更加用户友好

    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;
    }
    

    您可以尝试使用
    CommonStatusCodes.ERROR
    ,但我不确定当收到的短信特别无效时是否会触发此操作

    一个用户友好的解决方案可能是:设置一个30秒的计时器,例如,在您请求SMS/OTP时立即启动。当倒计时完成时,显示“重新发送短信”按钮。因此,如果没有收到/检索短信,您可以使用更友好的方式让用户重试并请求另一条短信