2012-09-05 21 views
7

ben aynı gönderici/alıcıdan olmadıklarını belirlemek amacıyla iki telefon numaralarını karşılaştırmak gerekir. Kullanıcı bir kişiye mesaj gönderebilir ve bu kişi cevap verebilir.karşılaştırılması telefon numaraları Android

cevap genellikle +[country-code][area-code-if-any][and-then-the-actual-number] biçiminde gelir. Örneğin, bir Sri Lanka telefon numarasını +94 71 2593276.

Ve kullanıcı mesaj gönderdiği zaman, genelde (yukarıdaki örneğin) biçiminde girecek 0712593276 (o Sri Lanka da varsayabiliriz).

Yani ne gerek, ben bu iki sayının aynı olup olmadığını kontrol etmeniz gerekir olduğunu. Bu uygulama uluslararası olarak kullanılacaktır. Bu yüzden ilk 2 haneyi 0 ile değiştiremiyorum (o zaman ABD gibi ülkeler için bir sorun olacaktır). Bunu Java veya Android'de özel olarak yapmanın bir yolu var mı?

Teşekkürler.

+0

telefon numaraları her ülkede geçerli basit kurallara uymayan. Her ülke için vakaları kodlamanız gerekecek. –

+0

@PeterLawrey Bu biraz aşırı görünüyor .. :) Ama mümkün olmalıydı. Sadece stok Android mesajlaşma uygulamasını düşünün. Her iki yönde de girip girmediğimizi aynı numaraya sahip olup olmadığını anlayacaktır. – Roshnal

+0

Bunun için bir arama tablosu olduğunu hayal edin. Bu uygulamayı okumak veya kaynak kodunu okumak için zaten var mı? –

cevap

2

Nasıl sayı alıcının sayısının bir alt dize olup olmadığını kontrol dersiniz?

Örneğin, benim Brezilyalı sayı 888-777-666 olduğunu varsayalım ve seninki 111-222-333 olduğunu. Seni aramak için, uluslararası aramalar yapmak için daha fazla numara çevirmem gerekiyor. 9999 + your_number ekleyelim diyelim ki 9999111222333 ile sonuçlanmalı.

RawNumber.substring(your_number)true'u döndürürse sizi aradığımı söyleyebilirim.

-1

sadece mantık uygulamak (kaldırmak) ve - ve PhoneNumberUtils

izleyin
5

android.telephony. PhoneNumberUtils sınıf telefon numaraları ve standartlara başa neredeyse tüm gerekli fonksiyonları sağlar.

Sizin durumunuz için, çözüm PhoneNumberUtils. compare(Context context, String number1, String number2) veya PhoneNumberUtils. compare(String number1, String number2)'dur. Birincisi, sıkı veya zayıf bir karşılaştırma algoritmasının kullanılıp kullanılmayacağını belirlemek için bir kaynağı denetler, böylece çoğu durumda daha iyi seçimdir.

PhoneNumberUtils.compare("0712593276", "+94712593276") // always true 
PhoneNumberUtils.compare("0712593276", "+44712593276") // always true 

// true or false depends on the context 
PhoneNumberUtils.compare(context, "0712593276", "+94712593276") 

Resmi documentation'a bir bakın. Ve source code.