Wie formatiere ich eine Telefonnummer mit PhoneNumberUtils?

Lesezeit: 3 Minuten

Benutzer-Avatar
Bytecode

Wie kann ich eine Telefonnummer formatieren? PhoneNumberUtils?

Z.B: 1234567890(123) 456-7890

  • Überprüfen Sie diese Antwort auf stackoverflow.com/a/55416434/7041761

    – Max Sonov

    29. März 2019 um 13:09 Uhr

Benutzer-Avatar
Sven Wikinger

In seiner einfachsten Form:

String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);

Dadurch wird die Nummer automatisch gemäß den Regeln für das Land formatiert, aus dem die Nummer stammt.

Sie können bearbeitbaren Text auch direkt formatieren, indem Sie Folgendes verwenden:

PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);

Schauen Sie sich an PhoneNumberUtils für weitere Optionen.

  • statt 1234567890 → (123) 456-7890 erhalte ich:

    – Brillant Pappin

    29. Januar 2013 um 16:46 Uhr

  • Obwohl die Antwort richtig ist, denke ich, dass die eigentlich richtige Antwort auf diese Frage ist, dass die Formatierung NICHT anpassbar genug ist, es sei denn, Sie möchten Ihre eigene Implementierung schreiben. 🙁 STPhoneFormatter in CocoaPods für die iOS-Entwicklung ist eine ziemlich raffinierte Bibliothek, um dies dort drüben zu handhaben. Keine solche Freude für Android. :-/

    – Norman H

    18. Dezember 2013 um 21:59 Uhr

  • @Sven Viking Ich möchte formatierte Zahlen in unformatierte Zahlen konvertieren wie .. 555-4 to 5554 irgendeine Lösungsmöglichkeit..?

    – Gorgeous_DroidVirus

    5. April 2014 um 7:41 Uhr

  • PhoneNumberUtils.formatNumber(String-Quelle) ist in Lollipop veraltet, man muss es verwenden PhoneNumberUtils.formatNumber (String phoneNumber, String defaultCountryIso)

    – Schneesturm

    3. Februar 2015 um 15:56 Uhr


  • PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType); Was ist defaultFormattingType hier ?

    – Azim Ansari

    23. Juli 2015 um 7:04 Uhr

Ich habe mich für die Version von Google entschieden (https://github.com/googlei18n/libphonenumber), weil dann das min SDK niedriger sein kann (ich denke, es ist nicht im Android SDK bis 21).

Die Verwendung ist in etwa so:

PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber pn = pnu.parse("1234567890", "US");
String pnE164 = pnu.format(pn, PhoneNumberUtil.PhoneNumberFormat.E164);

In Android Studio muss man dies zu den Abhängigkeiten in build.gradle hinzufügen:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ...
    compile 'com.googlecode.libphonenumber:libphonenumber:7.2.2'
}

formatNumber ist bei LOLLIPOP veraltet, danach müssen Sie das Gebietsschema als zusätzliches Argument hinzufügen.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  return PhoneNumberUtils.formatNumber(yourStringPhone,Locale.getDefault().getCountry());
} else {
//Deprecated method
  return PhoneNumberUtils.formatNumber(yourStringPhone); 
}

  • Ich habe dies versucht, aber die Telefonnummer wird auf dem Mobilgerät nicht formatiert. Da sie auf dem Tablet ordnungsgemäß funktioniert, zeigt das Tablet eine formatierte Nummer an.

    – Musik

    21. Juni 2017 um 9:12 Uhr


  • Ich bin in Indien und Locale.getDefault().getCountry() gibt mir “US”. Ok, das ist kein Problem, aber die Nummer wird nicht formatiert. Es gibt die 10/11-stellige Zahl unverändert zurück. Und mit der veralteten Methode wird formatiert zurückgegeben.

    – pratik03

    24. Juli 2017 um 7:19 Uhr

  • getCountry() gibt “” für mich zurück

    – Tyler

    19. Oktober 2017 um 19:25 Uhr

  • Arbeitete in den USA für mich.

    – MAF

    11. November 2020 um 21:38 Uhr

Benutzer-Avatar
Norman H

Es sieht aus wie diese Bibliothek von Google könnte eine bessere Lösung für benutzerdefinierte Formatierungen in Android sein.

API-Dokumente:
https://github.com/googlei18n/libphonenumber/blob/master/README.md

2020- November

Folgendes hat für mich für alle Versionen des Betriebssystems funktioniert:

PhoneNumberUtils.formatNumber(yourStringPhone,Locale.getDefault().getCountry());

Benutzer-Avatar
Walstute

Eigenständige Lösung zum Formatieren von Rohtelefonnummern, wenn Sie Ihr Land nicht kennen und Unterstützung für Pre-Lollipop benötigen.

fun formatNumberCompat(rawPhone: String?, countryIso: String = ""): String {
    if (rawPhone == null) return ""

    var countryName = countryIso
    if (countryName.isBlank()) {
        countryName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Resources.getSystem().configuration.locales[0].country
        } else {
            Resources.getSystem().configuration.locale.country
        }
    }

    return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        PhoneNumberUtils.formatNumber(rawPhone)
    } else {
        PhoneNumberUtils.formatNumber(rawPhone, countryName)
    }
}

Benutzer-Avatar
Sam Chen

2020 Arbeitslösung:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

String countryIso = telephonyManager.getNetworkCountryIso().toUpperCase();              //important!!

phoneNumberTextView.setText(PhoneNumberUtils.formatNumber("3473214567", countryIso));

1215640cookie-checkWie formatiere ich eine Telefonnummer mit PhoneNumberUtils?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy