Frage

Ich kann die Telefonnummer aus einem eingehenden Anruf oder von einer SMS -Nachricht erhalten. Leider könnte es im Falle der SMS den Ländercode darin geben. Grundsätzlich muss ich die einfache Telefonnummer ohne Ländercode erhalten, um sie mit vorhandenen Nummern in Kontakten zu vergleichen.

War es hilfreich?

Lösung

Wenn Sie Telefonnummern vergleichen möchten, können Sie jederzeit das verwenden

PhoneNumberUtils.compare(number1, number2);

oder

PhoneNumberUtils.compare(context, number1, number2);

Dann müssen Sie sich keine Sorgen um den Ländercode machen, er wird nur die Zahlen aus der umgekehrten Reihenfolge vergleichen und sehen, ob sie übereinstimmen (mindestens für Anruferidzwecke).

Andere Tipps

Schnell ungetestete Ansatz (AFAIK -Telefonnummern haben 10 Ziffern):

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

Dann nennen Sie diese Funktionen einfach

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top