¿Cómo obtener el nombre y el apellido de los contactos de Android?

¿Cómo obtener los siguientes campos de los contactos de Android? He utilizado Android 2.2.

  1. Prefijo del nombre
  2. Nombre de pila
  3. Segundo nombre
  4. Apellido
  5. Prefijo del nombre
  6. Nombre fonético
  7. Segundo nombre fonético
  8. Apellido fonético

Busque la clase ContactsContract.CommonDataKinds.StructuredName . Usted puede encontrar allí todas las columnas que usted está buscando. Intente algo como esto:

  String whereName = ContactsContract.Data.MIMETYPE + " = ?"; String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }; Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME); while (nameCur.moveToNext()) { String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME)); } nameCur.close(); 

Devuelve todos los nombres de los contactos. Para ser más preciso, puede agregar un identificador de contacto como un parámetro adicional a la consulta – obtendrá la dirección de un contacto en particular.

Para un contacto especificado puede hacer esto:

 String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = ?"; String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, contact_ID }; Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME); while (nameCur.moveToNext()) { String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME)); } nameCur.close(); 

Intente utilizar este código para obtener la información necesaria sobre el contacto, el código está aquí:

 import android.provider.ContactsContract.Contacts; import android.database.Cursor; // Form an array specifying which columns to return, you can add more. String[] projection = new String[] { ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Email }; Uri contacts = ContactsContract.Contacts.CONTENT_LOOKUP_URI; // id of the Contact to return. long id = 3; // Make the query. Cursor managedCursor = managedQuery(contacts, projection, // Which columns to return null, // Which rows to return (all rows) // Selection arguments (with a given ID) ContactsContract.Contacts._ID = "id", // Put the results in ascending order by name ContactsContract.Contacts.DISPLAY_NAME + " ASC"); 

Como el otro ejemplo (sólo por diversión), pero para buscar el nombre de contacto de un solo usuario:

 // A contact ID is fetched from ContactList Uri resultUri = data.getData(); Cursor cont = getContentResolver().query(resultUri, null, null, null, null); if (!cont.moveToNext()) { Toast.makeText(this, "Cursor contains no data", Toast.LENGTH_LONG).show(); return; } int columnIndexForId = cont.getColumnIndex(ContactsContract.Contacts._ID); String contactId = cont.getString(columnIndexForId); // Fetch contact name with a specific ID String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = " + contactId; String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }; Cursor nameCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME); while (nameCur.moveToNext()) { String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME)); Toast.makeText(this, "Name: " + given + " Family: " + family + " Displayname: " + display, Toast.LENGTH_LONG).show(); } nameCur.close(); cont.close(); 

Algunos enlaces para empezar, además de las sugerencias de Raunak:

Experimentando con los ContactsContract.Data.CONTENT_URI a finales de 2015 en la melcocha. No puedo obtener los campos GIVEN_NAME o similares. Creo que los apis posteriores han desaprobado estos. Ejecute el siguiente código para imprimir las columnas que tiene en su teléfono

 Uri uri = ContactsContract.Data.CONTENT_URI; String selection = ContactsContract.Data.MIMETYPE + " = ?"; String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE}; Cursor cursor = contentResolver.query( uri, // URI representing the table/resource to be queried null, // projection - the list of columns to return. Null means "all" selection, // selection - Which rows to return (condition rows must match) selectionArgs, // selection args - can be provided separately and subbed into selection. null); // string specifying sort order if (cursor.getCount() == 0) { return; } Log.i("Count:", Integer.toString(cursor.getCount())); // returns number of names on phone while (cursor.moveToNext()) { // Behold, the firehose! Log.d(TAG, "-------------------new record\n"); for(String column : cursor.getColumnNames()) { Log.d(TAG, column + ": " + cursor.getString(cursor.getColumnIndex(column)) + "\n"); } } 

prueba esto,

 public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); try { if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor cur = managedQuery(contactData, null, null, null, null); ContentResolver contect_resolver = getContentResolver(); if (cur.moveToFirst()) { String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); String name = ""; String no = ""; Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); if (phoneCur.moveToFirst()) { name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } Log.e("Phone no & name :***: ", name + " : " + no); txt.append(name + " : " + no + "\n"); id = null; name = null; no = null; phoneCur = null; } contect_resolver = null; cur = null; // populateContacts(); } } catch (IllegalArgumentException e) { e.printStackTrace(); Log.e("IllegalArgumentException::", e.toString()); } catch (Exception e) { e.printStackTrace(); Log.e("Error :: ", e.toString()); } } 

Compruebe aquí hay código de ejemplo exactamente para eso: http://developer.android.com/guide/topics/ui/layout/listview.html

  • ¿Cómo puedo obtener un groupId / GroupName de un contacto en Android?
  • Campos personalizados en el nuevo contacto
  • Aplicación de copia de seguridad y sincronización de contactos
  • No se puede insertar los contactos de android mediante programación en el dispositivo de Android
  • Obtener la ID de correo electrónico y el nombre de la guía telefónica integrada de android?
  • Cómo detectar el número de teléfono predeterminado de un contacto (si está configurado)
  • Android Contacts._ID! = Data.CONTACT_ID
  • Desea crear un nuevo grupo en los contactos mediante programación
  • ¿Cómo obtener ID de contacto, correo electrónico, número de teléfono en una consulta SQLite? Optimización para Android de los contactos
  • ContentObserver para los cambios de contacto de escucha
  • ¿Cómo puedo obtener mi tipo de cuenta personalizada para que aparezca en la aplicación de contactos de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.