Получить номер телефона без кода страны с целью сравнения чисел

StackOverflow https://stackoverflow.com/questions/6813638

Вопрос

Я могу получить номер телефона с входящего вызова или из SMS -сообщения. К сожалению, в случае SMS в ней может быть код страны. Таким образом, в основном мне нужно получить простой номер телефона без кода страны, чтобы сравнить его с существующими номерами в контактах.

Это было полезно?

Решение

Если вы хотите сравнить телефонные номера, вы всегда можете использовать

PhoneNumberUtils.compare(number1, number2);

или же

PhoneNumberUtils.compare(context, number1, number2);

Тогда вам не нужно беспокоиться о коде страны, он просто сравнит цифры из обращенного заказа и посмотрите, соответствуют ли они (достаточно для целей Callerid, по крайней мере).

Другие советы

Быстрый непроверенный подход (номера телефонов AFAIK имеют 10 цифр):

// 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?...
}

Тогда вы просто называете эти функции

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top