【问题标题】:How to get mobile number without country code when using HintRequest for phones mobile number in Android在Android中使用HintRequest获取手机号码时如何获取没有国家代码的手机号码
【发布时间】:2019-12-07 16:53:08
【问题描述】:

我正在使用此代码获取手机号码。但问题是我收到的号码附有国家代码。我想要一个没有国家代码的号码(只有手机号码)。我不能削减数字的长度,因为每个国家都有不同的国家代码长度。

那我该怎么办呢。

  public void getHintPhoneNumber() {
    HintRequest hintRequest =
            new HintRequest.Builder()
                    .setPhoneNumberIdentifierSupported(true)
                    .build();
    PendingIntent mIntent = Auth.CredentialsApi.getHintPickerIntent(mGoogleApiClient, hintRequest);
    try {
        startIntentSenderForResult(mIntent.getIntentSender(), RESOLVE_HINT, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }
}

还有这个设置手机号码的代码。

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //Result if we want hint number
    if (requestCode == RESOLVE_HINT) {
        if (resultCode == Activity.RESULT_OK) {
            if (data != null) {
                Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
                // credential.getId();  <-- will need to process phone number string
                Log.v("wkdcbgwc",credential.getId());
                etMobile.setText(credential.getId());
            }

        }
    }
}

我不知道该怎么做。

【问题讨论】:

    标签: android mobile one-time-password sms-retriever-api


    【解决方案1】:

    我知道我回答有点晚了,但这可能有助于其他人寻求相同问题的答案。只需在 onActivityResult 中替换此代码

    if (data != null) {
       Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
       if (credential.getId().startsWith("+")) {
          if (credential.getId().length() == 13) {
             etMobile.setText(credential.getId().substring(3));
          } else if (credential.getId().length() == 14) {
               etMobile.setText(credential.getId().substring(4));
          }
       } else {
           etMobile.setText(credential.getId());
       }
    }
    

    【讨论】:

      【解决方案2】:

      用这个替换你的 onActivityResult:-

        @Override
      protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == RESOLVE_HINT) {
              if (resultCode == Activity.RESULT_OK) {
                  if (data != null) {
                      Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
      
                      if (credential.getId().startsWith("+")) {
                          switch(credential.getId().length()){
                              case 12:
                                  etMobile.setText(credential.getId().substring(2));
                                  break;
                              case 13:
                                  etMobile.setText(credential.getId().substring(3));
                                  break;
                              case 14:
                                  etMobile.setText(credential.getId().substring(4));
                                  break;
                              default:
                                   Toast.makeText(this, "Please enter your phone number manually!",
                                          Toast.LENGTH_LONG).show();
                                  break;
                          }
      
                      } else {
                          etMobile.setText(credential.getId());
                      }
                  }
      
              }
          }
      }
      

      【讨论】:

      • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
      【解决方案3】:

      如果你想分开国家代码和手机号码:-

      @Override
      protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          //Result if we want hint number
          if (requestCode == RESOLVE_HINT) {
              if (resultCode == Activity.RESULT_OK) {
                  if (data != null) {
                      Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
      
                      if (credential.getId().startsWith("+")) {
                          switch(credential.getId().length()){
                              case 12:
                                  inputCountryCode.setText(credential.getId().substring(1,2));
                                  inputMobileNumber.setText(credential.getId().substring(2));
                                  break;
                              case 13:
                                  inputCountryCode.setText(credential.getId().substring(1,3));
                                  inputMobileNumber.setText(credential.getId().substring(3));
                                  break;
                              case 14:
                                  inputCountryCode.setText(credential.getId().substring(1,4));
                                  inputMobileNumber.setText(credential.getId().substring(4));
                                  break;
                              default:
                                  Toast.makeText(this, "Please enter your phone number manually!",
                                          Toast.LENGTH_LONG).show();
                                  break;
                          }
      
                      } else {
                          inputMobileNumber.setText(credential.getId());
                      }
                  }
      
              }
          }
      }
      

      【讨论】:

      • 你为什么发布了两个看似相同的答案?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多