el selector de contactos muestra todos los contactos se realiza esta Linke (como se dice muchas veces aquí en SO):problemas recogiendo un contacto con el número de teléfono y que la lectura de los números de teléfono de llamada
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, REQ_CODE);
Me estoy poniendo el contacto nombre y todos sus números de teléfono en onActivityResult con el siguiente fragmento:
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
Uri contactUri = intent.getData();
ContentResolver resolver = getContentResolver();
long contactId = -1;
// get display name from the contact
Cursor cursor = resolver.query(contactUri,
new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
null, null, null);
if(cursor.moveToFirst())
{
contactId = cursor.getLong(0);
Log.i("tag", "ContactID = " + Long.toString(contactId));
Log.i("tag", "DisplayName = " + cursor.getString(1));
}
// get all phone numbers with type from the contact
cursor = resolver.query(Phone.CONTENT_URI,
new String[] { Phone.TYPE, Phone.NUMBER },
Phone.CONTACT_ID + "=" + contactId, null, null);
while(cursor.moveToNext())
{
Log.i("tag", "PhoneNumber = T:" + Integer.toString(cursor.getInt(0)) + "/N:" + cursor.getString(1));
}
Llamando al selector de contactos y mostrar sólo los contactos con un número de teléfono se pueden hacer así (también encontraron en SO):
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, REQ_CODE);
Si lo hago, solo veo aquellos contactos en el selector de contactos que tienen al menos un número de teléfono, que es exactamente lo que necesito. Lamentablemente, con el fragmento de código anterior solo obtengo el nombre para mostrar pero NO más números de teléfono.
¿Alguien tiene una idea de lo que tengo que cambiar para obtener los números de teléfono?
Gracias de antemano
Gracias por su respuesta Jordi. El problema real es la primera consulta en el método onActivityResult de mi pregunta: Devuelve la ID del Contacto o Teléfono, dependiendo de si configuro o no el tipo en el Intento con 'intent.setType (..)'. Y como necesito ambas formas de leer un contacto (usando el selector de contactos con el filtro del teléfono o sin él), tendré que leer Contact._ID y DisplayName en la primera consulta, dependiendo de eso. Pero su respuesta ayuda ... Gracias de nuevo. – infero