'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.



Solution 1:[1]

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

Solution 2:[2]

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

        }
    }
}

Solution 3:[3]

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

        }
    }
}

Solution 4:[4]

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kartik Agarwal
Solution 2 ATA UR RAHMAN
Solution 3 ATA UR RAHMAN
Solution 4 Mohd Qasim