简体   繁体   中英

How to get mobile number without country code when using HintRequest for phones mobile number in Android

I am using this code for getting mobile number. but the problem is the number I am getting is attached with its country code. I want a number without country code (only mobile number). I cannot cut the length of number because all country have different length of country code.

So what can I do for this.

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

And this code for setting mobile number.

@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());
            }

        }
    }
}

I do not have any idea how to do this.

I know I am a little late to answer but this may help others seeking an answer for the same question. Just replace this code inside your 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());
   }
}

Replace your onActivityResult with this:-

  @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());
                }
            }

        }
    }
}

If you want to separate country code & mobile number:-

@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());
                }
            }

        }
    }
}

you can take last 10 digits of the result it?.takeLast(10) to release 91/+91

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM