2012-09-05 7 views
7

Devo confrontare due numeri di telefono per determinare se provengono dallo stesso mittente/destinatario. L'utente può inviare un messaggio a un contatto e tale contatto può rispondere.Confronto dei numeri di telefono in Android

La risposta di solito è disponibile nel formato +[country-code][area-code-if-any][and-then-the-actual-number]. Ad esempio, +94 71 2593276 per un numero di telefono dello Sri Lanka.

E quando l'utente invia un messaggio, di solito inserisce il formato (per l'esempio precedente) 0712593276 (si presuma che si trovi anche in Sri Lanka).

Quindi quello che mi serve è, Ho bisogno di controllare se questi due numeri sono uguali. Questa app sarà usata a livello internazionale. Quindi non posso semplicemente sostituire le prime 2 cifre con uno 0 (quindi sarà un problema per paesi come gli Stati Uniti). Esiste un modo per farlo in Java o Android, in particolare?

Grazie.

+0

I numeri di telefono non seguono semplici regole applicabili in ogni paese. Dovrai codificare i casi per ogni paese. –

+0

@PeterLawrey Sembra un po 'estremo .. :) Ma dovrebbe essere possibile. Basti pensare all'app di messaggistica Android. Riconoscerà se è lo stesso numero indipendentemente dal fatto che lo inseriamo in entrambi i modi. – Roshnal

+0

Immagino che abbia una tabella di ricerca per questo. C'è comunque da leggere la fonte o decompilare questa app? –

risposta

2

Come controllare se il numero è una sottostringa del numero del destinatario?

Ad esempio, supponiamo che il mio numero brasiliano sia 888-777-666 e il vostro sia 111-222-333. Per chiamarti, da qui, ho bisogno di comporre numeri aggiuntivi per effettuare chiamate internazionali. Diciamo che devo aggiungere 9999 + tuo_number, risultante in 9999111222333.

Se RawNumber.substring(your_number) restituisce true Posso dire che ti sto chiamando.

-1

basta applicare la logica rimuovere() e - e seguire PhoneNumberUtils

5

android.telephony. PhoneNumberUtils classe fornisce quasi tutte le funzioni necessarie per gestire numeri di telefono e standard.

Per il tuo caso, la soluzione è PhoneNumberUtils. compare(Context context, String number1, String number2) oppure PhoneNumberUtils. compare(String number1, String number2). La prima controlla una risorsa per determinare se utilizzare un algoritmo di confronto rigido o allentato, quindi la scelta migliore nella maggior parte dei casi.

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

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

Dai un'occhiata allo documentation ufficiale. E lo source code.