Ha habido varias preguntas sobre SO con respecto a obtener números de Contactos usando la API de Contactos, pero me gustaría saber si hay una manera de identificar que el número recuperado es un número de teléfono móvil.Obtener número de teléfono de Contactos solamente
El siguiente código se muestra a menudo como una forma de obtener los números de teléfono de un contacto, como se pone una lista de uno o más números de teléfono:
String[] projection = {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1";
Cursor cursor = null;
Cursor phones = null;
try
{
cursor = managedQuery(intent.getData(), projection, selection, null, null);
while (cursor.moveToNext())
{
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
String pdata = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
Log.v("DATA",pdata);
}
}
}
catch (NullPointerException npe)
{
Log.e(TAG, "Error trying to get Contacts.");
}
finally
{
if (phones != null)
{
phones.close();
}
if (cursor != null)
{
cursor.close();
}
}
Si bien, esto funciona bien, ¿hay alguna manera de identifique fácilmente que el número de teléfono es un tipo de dispositivo móvil (además de intentar hacer coincidir el patrón con Regex).
sospecho que debe haber una pieza relacionada de datos, por lo que las aplicaciones nativas pueden clasificar el número de teléfono - como en la imagen siguiente:
solución simple y perfecta +1 –