Get phone number without country code for the purpose of comparing numbers
Asked Answered
C

2

9

I can obtain the phone number from an incoming call or from a sms message. unfortunately, in case of the SMS there might be the country code in it. So, basically I need to obtain the plain phone number, without country code, in order to compare it with existing numbers in Contacts.

Cassilda answered 25/7, 2011 at 8:50 Comment(1)
See also: https://mcmap.net/q/961255/-comparing-phone-numbers-in-android/247696Turnstone
C
31

If you want to compare phone numbers you can always use the

PhoneNumberUtils.compare(number1, number2);

or

PhoneNumberUtils.compare(context, number1, number2);

Then you don't have to worry about the country code, it will just compare the numbers from the reversed order and see if they match (enough for callerID purposes at least).

Czarevna answered 25/7, 2011 at 10:8 Comment(1)
This seems to work good enough for me. Thank you for your help.Cassilda
G
-1

fast untested approach (AFAIK phone numbers have 10 digits):

// As I said, AFAIK phone numbers have 10 digits... (at least here in Mexico this is true)
int digits = 10;
// the char + is always at first.
int plus_sign_pos = 0;

// Always send the number to this function to remove the first n digits (+1,+52, +520, etc)
private String removeCountryCode(String number) {
    if (hasCountryCode(number)) {
        // +52 for MEX +526441122345, 13-10 = 3, so we need to remove 3 characters
        int country_digits = number.length() - digits;
        number = number.substring(country_digits);
    }
    return number;
}

// Every country code starts with + right?
private boolean hasCountryCode(String number) {
    return number.charAt(plus_sign_pos) == '+'; // Didn't String had contains() method?...
}

then you just call these functions

Gratification answered 25/7, 2011 at 9:23 Comment(3)
Your solution is great for fixed phone number length. Unfortunately there are various length around the world.Cassilda
This wouldnt work everywhere, because country code length differsHawken
...and in some countries the length of the phone numbers varies too - see the UK for some examples.Advocate

© 2022 - 2024 — McMap. All rights reserved.