Perpustakaan Java, C ++, dan JavaScript Google yang umum untuk parsing, memformat, dan memvalidasi nomor telepon internasional. Versi Java dioptimalkan untuk menjalankan smartphone, dan digunakan oleh kerangka Android sejak 4.0 (sandwich es krim).
README
di direktori yang relevan dengan kode yang Anda minati.getNumberType
- gets the type of the number based on the number itself; dapat membedakan garis tetap, seluler, bebas pulsa, tarif premium, biaya bersama, VoIP, nomor pribadi, UAN, pager, dan voicemail (kapan pun layak).isNumberMatch
- Mendapat tingkat kepercayaan pada apakah dua angka bisa sama.getExampleNumber
dan getExampleNumberForType
- berikan contoh contoh yang valid untuk semua negara/wilayah, dengan opsi untuk menentukan jenis contoh nomor telepon yang diperlukan.isPossibleNumber
- dengan cepat menebak apakah nomor adalah nomor telepon yang mungkin dengan menggunakan hanya informasi panjang, jauh lebih cepat daripada validasi penuh.isValidNumber
- Validasi penuh dari nomor telepon untuk suatu wilayah menggunakan informasi panjang dan awalan.AsYouTypeFormatter
-memformat nomor telepon saat-saat memasuki setiap digit.findNumbers
- Menemukan angka dalam teks.PhoneNumberOfflineGeocoder
- memberikan informasi geografis yang terkait dengan nomor telepon.PhoneNumberToCarrierMapper
- Memberikan informasi operator yang terkait dengan nomor telepon.PhoneNumberToTimeZonesMapper
- Menyediakan informasi zona waktu yang terkait dengan nomor telepon.Demo Java diperbarui dengan sedikit penundaan setelah rilis GitHub.
Pembaruan Demo Terakhir: v8.13.50.
Catatan: Meskipun perpustakaan (rilis cabang/maven utama) berada di V8.12.57, karena beberapa masalah penempatan, kami tidak dapat memperbarui demo Java dengan versi biner baru. Kami akan segera memperbaikinya. Sementara itu, silakan gunakan demo JS.
Jika nomor ini lebih rendah dari nomor versi rilis terbaru, kami berada di antara rilis dan demo mungkin ada di kedua versi.
Ada aplikasi Demo Android yang disebut E.164 Formatter di repositori ini. Tujuan dari aplikasi ini adalah untuk menunjukkan contoh bagaimana perpustakaan dapat digunakan dalam situasi kehidupan nyata, dalam hal ini khususnya dalam aplikasi Android menggunakan Java.
Demo JavaScript dapat dijalankan di berbagai tag; Tautan ini akan membawa Anda untuk master
.
Untuk memasukkan kode Java dalam aplikasi Anda, baik berintegrasi dengan Maven (lihat wiki) atau unduh stoples terbaru dari repositori Maven.
Javadoc secara otomatis diperbarui untuk mencerminkan rilis terbaru di https://javadoc.io/doc/com.googlecode.libphonenumber/libphonenumber/.
Kami biasanya memilih nomor rilis yang mengikuti pedoman ini.
Jika salah satu perubahan yang didorong untuk menguasai karena rilis terakhir tidak sesuai dengan maksud / spesifikasi API libphonenumber yang ada atau dapat menyebabkan klien libphonenumber (Java, C ++, atau JS) harus mengubah kode mereka untuk tetap membangun, kami menerbitkan a rilis utama. Misalnya, jika rilis terakhir adalah 7.7.3, yang baru akan 8.0.0.
Jika salah satu dari perubahan itu memungkinkan klien untuk memperbarui kode mereka untuk memanfaatkan fungsionalitas baru, dan jika klien harus menggulung perubahan ini jika rilis itu ditandai sebagai "buruk", kami menerbitkan rilis minor. Misalnya, kita akan pergi dari 7.7.3 menjadi 7.8.0.
Jika tidak, termasuk ketika rilis hanya berisi perubahan metadata, kami menerbitkan rilis sub-minor, mis. 7.7.3 hingga 7.7.4.
Kadang -kadang kami membuat perubahan internal pada kode atau metadata yang, meskipun tidak mempengaruhi kompatibilitas untuk klien, dapat mempengaruhi kompatibilitas untuk porter perpustakaan. Untuk perubahan seperti itu kami membuat pengumuman untuk putusan libphonenumber. Perubahan seperti itu tidak tercermin dalam nomor versi, dan kami akan menerbitkan rilis sub-minor jika tidak ada perubahan lain.
Ingin diberi tahu tentang rilis baru? Selama sebagian besar tahun, kecuali liburan dan keadaan yang meringankan, kami melepaskan dua minggu. Kami memperbarui tag rilis dan mendokumentasikan catatan rilis terperinci. Kami juga mengirim pengumuman kepada Libphonenumber-Diskuss untuk setiap rilis.
Katakanlah Anda memiliki string yang mewakili nomor telepon dari Swiss. This is how you parse/normalize it into a PhoneNumber
object:
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 ());
}
Pada titik ini, swissNumberProto
berisi:
{
"country_code" : 41 ,
"national_number" : 446681800
}
PhoneNumber
adalah kelas yang awalnya dihasilkan secara otomatis dari phonenumber.proto
dengan modifikasi yang diperlukan untuk efisiensi. Untuk detail tentang arti masing -masing bidang, lihat resources/phonenumber.proto
.
Sekarang mari kita validasi apakah nomornya valid:
boolean isValid = phoneUtil . isValidNumber ( swissNumberProto ); // returns true
Ada beberapa format yang didukung oleh metode pemformatan, seperti yang diilustrasikan di bawah ini:
// 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 ));
Anda juga dapat memilih untuk memformat nomor dalam cara diputar dari negara lain:
// 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 ));
Peringatan: Kami tidak memberikan data tentang operator saat ini dari nomor telepon, hanya operator asli yang ditugaskan rentang yang sesuai. Baca tentang portabilitas angka.
PhoneNumber swissMobileNumber =
new PhoneNumber (). setCountryCode ( 41 ). setNationalNumber ( 798765432L );
PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper . getInstance ();
// Outputs "Swisscom"
System . out . println ( carrierMapper . getNameForNumber ( swissMobileNumber , Locale . ENGLISH ));
Lebih banyak contoh tentang cara menggunakan perpustakaan dapat ditemukan dalam tes unit.
Beberapa port pihak ketiga dari pustaka nomor telepon diketahui oleh kami. Kami membagikannya di sini jika mereka berguna untuk pengembang.
Namun, kami menekankan bahwa port -port ini adalah oleh pengembang di luar proyek libphoneneMer. Kami tidak mengevaluasi kualitas atau mempengaruhi proses pemeliharaan mereka.
Alternatif untuk versi kita sendiri:
Class#getResourcesAsStream
dan meminta aplikasi Android mengikuti praktik terbaik Android memuat pengemasan ulang metadata dan memuat dari AssetManager#open()
sendiri (FAQ). Jika Anda tidak ingin melakukan ini, lihat port di https://github.com/michaelrocks/libphonenumber-droid, yang memang mengemas ulang metadata dan menggunakan AssetManager#open()
, dan mungkin tergantung pada tanpa memerlukannya Optimalisasi pemuatan khusus dari klien. Anda juga harus memeriksa port di https://github.com/lionscribe/libphonenumber-android yang juga mendukung geocoding, dan hanya memerlukan perubahan kode satu baris.Alat berdasarkan metadata libphonenumber: