Die gemeinsame Bibliothek von Java, C ++ und JavaScript von Google zum Parsen, Formatieren und Validieren internationaler Telefonnummern. Die Java -Version ist für das Laufen auf Smartphones optimiert und wird seit 4.0 (Eiscremesandwich) vom Android -Framework verwendet.
README
in Verzeichnisse, die für den Code relevant sind, an dem Sie interessiert sind.getNumberType
- Holt den Typ der Nummer basierend auf der Nummer selbst; In der Lage, Festnetz-, Mobil-, gebührenfreie Prämienrate, gemeinsame Kosten, VoIP, persönliche Zahlen, UAN, Pager und Voicemail (wann immer machbar) zu unterscheiden.isNumberMatch
- erhält ein Konfidenzniveau darüber, ob zwei Zahlen gleich sein könnten.getExampleNumber
und getExampleNumberForType
- Geben Sie gültige Beispielnummern für alle Länder/Regionen an, um anzugeben, welche Art von Beispiel -Telefonnummer erforderlich ist.isPossibleNumber
- Vermutlich erraten Sie schnell, ob eine Nummer eine mögliche Telefonnummer ist, indem nur die Länge Informationen viel schneller als eine vollständige Validierung verwendet werden.isValidNumber
- Vollständige Validierung einer Telefonnummer für eine Region mithilfe von Länge und Präfixinformationen.AsYouTypeFormatter
-Formate Telefonnummern on-the-Fly, wenn Benutzer jede Ziffer eingeben.findNumbers
- Findet Zahlen im Text.PhoneNumberOfflineGeocoder
- Bietet geografische Informationen zu einer Telefonnummer.PhoneNumberToCarrierMapper
- Bietet Carrier -Informationen zu einer Telefonnummer.PhoneNumberToTimeZonesMapper
- Bietet Zeitzone -Informationen im Zusammenhang mit einer Telefonnummer.Die Java -Demo wird nach der Github -Veröffentlichung mit einer leichten Verzögerung aktualisiert.
Letzte Demo -Update: V8.13.50.
HINWEIS: Obwohl die Bibliothek (Hauptabteilung/Maven -Veröffentlichung) bei V8.12.57 aufgrund einiger Bereitstellungsprobleme stattfindet, konnten wir die Java -Demo nicht mit der neuen binären Version aktualisieren. Wir werden das bald beheben. In der Zwischenzeit verwenden Sie bitte JS Demo.
Wenn diese Nummer niedriger ist als die Versionsnummer der neuesten Version, befinden wir uns zwischen den Veröffentlichungen und die Demo kann in beiden Versionen sein.
In diesem Repository gibt es eine Demo -Android -App namens E.164 -Formatter. Der Zweck dieser App ist es, ein Beispiel dafür anzuzeigen, wie die Bibliothek in einer realen Situation verwendet werden kann, in diesem Fall speziell in einer Android-App mit Java.
Die JavaScript -Demo kann an verschiedenen Tags ausgeführt werden. Dieser Link bringt Sie zum master
.
Um den Java -Code in Ihre Anwendung aufzunehmen, integrieren Sie sich entweder in Maven (siehe Wiki) oder laden Sie die neuesten Gläser aus dem Maven -Repository herunter.
Javadoc wird automatisch aktualisiert, um die neueste Version unter https://javadoc.io/doc/com.googlecode.libphonenumber/libphonenumber/ widerzuspiegeln.
Wir wählen im Allgemeinen die Veröffentlichungsnummer nach diesen Richtlinien.
, Hauptveröffentlichung. Wenn beispielsweise die letzte Veröffentlichung 7,7,3 wäre, wäre der neue 8,0,0.
Wenn eine dieser Änderungen es Kunden ermöglicht, ihren Code zu aktualisieren, um neue Funktionen zu nutzen, und wenn Kunden diese Änderungen, falls die Veröffentlichung als "schlecht" markiert war, rollen müssten, veröffentlichen wir eine kleine Veröffentlichung. Zum Beispiel würden wir von 7.7.3 auf 7.8.0 gehen.
Andernfalls veröffentlichen wir eine Subminor-Veröffentlichung, z. B. 7.7.3 bis 7.7.4, einschließlich einer Veröffentlichung nur Metadatenänderungen.
Manchmal nehmen wir interne Änderungen des Codes oder der Metadaten vor, die jedoch die Kompatibilität für die Kompatibilität für Träger der Bibliothek beeinflussen können. Für solche Änderungen machen wir Ankündigungen an libphonernumber-discuss. Solche Änderungen spiegeln sich nicht in der Versionsnummer wider, und wir würden eine Sub-Minor-Veröffentlichung veröffentlichen, wenn keine anderen Änderungen gäbe.
Möchten Sie über neue Veröffentlichungen informiert werden? Während des größten Teils des Jahres, mit Ausnahme von Feiertagen und mildernden Umständen, geben wir vierzehntägige frei. Wir aktualisieren Release -Tags und dokumentieren detaillierte Versionshinweise. Für jede Veröffentlichung senden wir auch eine Ankündigung an libphonenumber-discuss.
Angenommen, Sie haben eine Zeichenfolge, die eine Telefonnummer aus der Schweiz darstellt. So analysieren/normalisieren Sie es in ein PhoneNumber
-Objekt:
String swissNumberStr = "044 668 18 00" ;
PhoneNumberUtil phoneUtil = PhoneNumberUtil . getInstance ();
try {
PhoneNumber swissNumberProto = phoneUtil . parse ( swissNumberStr , "CH" );
} catch ( NumberParseException e ) {
System . err . println ( "NumberParseException was thrown: " + e . toString ());
}
Zu diesem Zeitpunkt enthält swissNumberProto
:
{
"country_code" : 41 ,
"national_number" : 446681800
}
PhoneNumber
ist eine Klasse, die ursprünglich aus phonenumber.proto
mit den erforderlichen Änderungen für die Effizienz automatisch generiert wurde. Einzelheiten zur Bedeutung jedes Feldes finden Sie unter resources/phonenumber.proto
.
Lassen Sie uns nun validieren, ob die Nummer gültig ist:
boolean isValid = phoneUtil . isValidNumber ( swissNumberProto ); // returns true
Es gibt einige Formate, die von der Formatierungsmethode unterstützt werden, wie unten dargestellt:
// Produces "+41 44 668 18 00"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . INTERNATIONAL ));
// Produces "044 668 18 00"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . NATIONAL ));
// Produces "+41446681800"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . E164 ));
Sie können sich auch dafür entscheiden, die Nummer so zu formatieren, wie sie aus einem anderen Land gewählt wird:
// Produces "011 41 44 668 1800", the number when it is dialed in the United States.
System . out . println ( phoneUtil . formatOutOfCountryCallingNumber ( swissNumberProto , "US" ));
PhoneNumberUtil phoneUtil = PhoneNumberUtil . getInstance ();
AsYouTypeFormatter formatter = phoneUtil . getAsYouTypeFormatter ( "US" );
System . out . println ( formatter . inputDigit ( '6' )); // Outputs "6"
... // Input more digits
System . out . println ( formatter . inputDigit ( '3' )); // Now outputs "650 253"
PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder . getInstance ();
// Outputs "Zurich"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . ENGLISH ));
// Outputs "Zürich"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . GERMAN ));
// Outputs "Zurigo"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . ITALIAN ));
Vorbehalt: Wir geben keine Daten über den aktuellen Spediteur einer Telefonnummer an, nur den ursprünglichen Spediteur, dem der entsprechende Bereich zugewiesen wird. Lesen Sie über die Zahl der Zahlen.
PhoneNumber swissMobileNumber =
new PhoneNumber (). setCountryCode ( 41 ). setNationalNumber ( 798765432L );
PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper . getInstance ();
// Outputs "Swisscom"
System . out . println ( carrierMapper . getNameForNumber ( swissMobileNumber , Locale . ENGLISH ));
More examples on how to use the library can be found in the unit tests.
Mehrere Ports von Drittanbietern der Telefonnummer-Bibliothek sind uns bekannt. Wir teilen sie hier, falls sie für Entwickler nützlich sind.
Wir betonen jedoch, dass diese Ports von Entwicklern außerhalb des Projekts libphonenumme stammen. Wir bewerten ihre Qualität nicht oder beeinflussen ihre Wartungsprozesse.
Alternativen zu unseren eigenen Versionen:
Class#getResourcesAsStream
und fragt, dass Android-Apps den Best Practices für das Laden von Android-Ladevorgängen für die Neuverpackung der Metadaten und das Laden von AssetManager#open()
selbst (FAQ) folgen. Wenn Sie dies nicht tun möchten, sehen Sie sich den Port unter https://github.com/michaelrocks/libphonenumber-android an, die die Metadaten umverpackt und AssetManager#open()
verwendet werden kann, ohne diese zu benötigen, ohne diese zu benötigen, ohne diese zu benötigen Spezifische Ladeoptimierungen von Clients. Sie sollten sich auch den Port unter https://github.com/lionscribe/libphonenumber-fordroid ansehen, der auch Geocoding unterstützt, und nur eine Änderung eines Zeilencodes erfordert.Tools basierend auf libphonNumber -Metadaten: