Получить номер телефона без кода страны в Android
Я могу получить номер телефона из входящего вызова или из sms-сообщения. к сожалению, в случае SMS в нем может быть код страны. Итак, в основном мне нужно получить простой номер телефона, без кода страны, чтобы сравнить его с существующими номерами в контактах.
2 ответов
Если вы хотите сравнить номера телефона вы всегда можете использовать
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?...
}
тогда вы просто называете эти функции