Comparando números de teléfono en Android

Necesito comparar dos números de teléfono para determinar si son del mismo remitente / receptor. El usuario puede enviar un mensaje a un contacto, y ese contacto puede responder.

La respuesta generalmente viene en el formato +[country-code][area-code-if-any][and-then-the-actual-number] . Por ejemplo, +94 71 2593276 para un número de teléfono de Sri Lanka.

Y cuando el usuario envía un mensaje, generalmente ingresa el formato (para el ejemplo anterior) 0712593276 (asum que también está en Sri Lanka).

Entonces, lo que necesito es que necesito verificar si estos dos números son iguales. Esta aplicación será utilizada internacionalmente. Así que no puedo simplemente reemplazar los primeros 2 dígitos con un 0 (entonces será un problema para países como Estados Unidos). ¿Hay alguna forma de hacer esto en Java o Android específicamente?

Gracias.

Android tiene un buen PhoneNumberUtils, y creo que estás buscando:

  public static boolean compare (String a, String b) 

mira en: http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html

usarlo debería verse así:

 String phone1 String phone2 if (PhoneNumberUtils.compare(phone1, phone2)) { //they are the same do whatever you want! } 

android.telephony. PhoneNumberUtils android.telephony. PhoneNumberUtils clase android.telephony. PhoneNumberUtils proporciona casi todas las funciones necesarias para tratar con números de teléfono y estándares.

Para su caso, la solución es PhoneNumberUtils. compare(Context context, String number1, String number2) PhoneNumberUtils. compare(Context context, String number1, String number2) o bien PhoneNumberUtils. compare(String number1, String number2) PhoneNumberUtils. compare(String number1, String number2) . El primero verifica un recurso para determinar si usar un algoritmo de comparación estricto o suelto, por lo tanto, es la mejor opción en la mayoría de los casos.

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

Echa un vistazo a la documentación oficial. Y el código fuente .

¿Qué hay de comprobar si el número es una subcadena del número del receptor?

Por ejemplo, digamos que mi número brasileño es 888-777-666 y el tuyo es 111-222-333. Para llamarte, desde aquí, necesito marcar números adicionales para hacer llamadas internacionales. Digamos que necesito agregar 9999 + su_número, dando como resultado 9999111222333.

Si RawNumber.substring(your_number) devuelve true , puedo decir que lo estoy llamando.

solo aplica tu lógica para eliminar () y – y sigue a PhoneNumberUtils