ContactsContract para enumerar todos los campos disponibles?

En mi aplicación tengo que dar opportinity usuario para ver / editar todos los campos disponibles de ContactsContract.

¿Cómo debo obtener / ver todos los campos disponibles, incluidos los personalizados?

En primer lugar obtener todos los nombres de las personas que existen en su teléfono:

Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); while (phones.moveToNext()) { name = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); namelist.add(name); String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); number_list.add(phoneNumber); detaillist.put(name, phoneNumber); } phones.close(); } 

Ahora consiga la identificación del contacto y consiga la otra información como número de teléfono, identificación del email, dirección, organización usando identificación del contacto:

 protected void get_UserContactId(String item_clicked) { System.out.println("im in fincution contact id"); ContentResolver localContentResolver = this.getContentResolver(); Cursor contactLookupCursor = localContentResolver.query( Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(item_clicked)), new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null); try { while(contactLookupCursor.moveToNext()){ contactName = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME)); user_contact_id = contactLookupCursor.getString(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID)); System.out.println("contatc id id"+user_contact_id); } } finally { contactLookupCursor.close(); } } protected void get_UserEmail(String item_clicked) { Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + user_contact_id, null, null); while (emails.moveToNext()) { // This would allow you get several email addresses user_email_id = emails.getString( emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); String user_email_type=emails.getString( emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); System.out.println("the email type"+user_email_type); System.out.println("email address might be"+emailAddress); contact_attribute_type.add(EMAIL_TYPE[(Integer.parseInt(user_email_type))-1]); contact_attribute_value.add(user_email_id); } emails.close(); } protected void get_UserNumber(String item_clicked) { // TODO Auto-generated method stub final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.STARRED, ContactsContract.Contacts.TIMES_CONTACTED, ContactsContract.Contacts.CONTACT_PRESENCE, ContactsContract.Contacts.PHOTO_ID, ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.Contacts.HAS_PHONE_NUMBER, }; String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" +item_clicked+ "\" )"; Cursor c = this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); this.startManagingCursor(c); if (c.moveToNext()) { String id = c.getString(0); ArrayList<String> phones = new ArrayList<String>(); Cursor pCur = this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); while (pCur.moveToNext()) { phones.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); user_number=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String number_type=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); System.out.println("the number type---"+number_type); System.out.println("user no. in share is"+user_number); contact_attribute_type.add(PHONE_TYPE[(Integer.parseInt(number_type))-1]); contact_attribute_value.add(user_number); // Log.i("", name_to_search+ " has the following phone number "+ pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); } pCur.close(); } } protected String get_UserAddress() { // TODO Auto-generated method stub try { System.out.println(" im in user address"); Cursor address = getContentResolver().query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,null, ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + client_contact_id, null, null); while (address.moveToNext()) { // This would allow you get several email addresses user_home_address = address.getString( address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.DATA)); String user_address_type=address.getString( address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); System.out.println("the user address type"+user_address_type); System.out.println(" address might be"+user_home_address); contact_attribute_type.add(ADDRESS_TYPE[(Integer.parseInt(user_address_type))-1]); contact_attribute_value.add(user_home_address); } address.close(); } catch(Exception e) { System.out.println("this exception due to website"+e); } return(user_home_address); } protected void get_UserWebsite() { // TODO Auto-generated method stub try{ Cursor websiteNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Website.URL}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'",null,null); websiteNameCursor.moveToNext(); user_website=(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL))); System.out.println("this is my website"+(websiteNameCursor.getString(websiteNameCursor.getColumnIndex(Website.URL)))); contact_attribute_type.add("Website"); contact_attribute_value.add(user_website); } catch(Exception e) { user_website=null; System.out.println("this website is"+user_website); System.out.println("this exception in website"+e); } } protected void get_UserOrganization() { // TODO Auto-generated method stub try{ Cursor organizationNameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,new String[] {Organization.COMPANY}, ContactsContract.Data.CONTACT_ID + " = " + user_contact_id + " AND ContactsContract.Data.MIMETYPE = '" + ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE + "'",null,null); organizationNameCursor.moveToNext(); user_company=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.COMPANY)); // String user_company_type=organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.TYPE)); // System.out.println("the company type "+user_company_type); System.out.println("this is my organization"+user_company); contact_attribute_type.add("Company"); contact_attribute_value.add(user_company); } catch(Exception e) { user_company=null; System.out.println("user company name is"+user_company); System.out.println("this exception in org"+e); } } } 

Haciendo esto usted puede conseguir todos los campos de los contactos-contrato.

Esto registra el nombre y el valor de todas las columnas en todas las filas de contacto. Probado en Galaxy S6 con la aplicación de contactos nativos. Lo necesitaba para encontrar el nombre de columna que se utiliza para el sonido de notificación de SMS personalizado (sec_custom_alert).

 private void enumerateColumns() { Cursor cursor = getApplicationContext().getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { do { for(int i=0; i<cursor.getColumnCount();i++) { Log.d("myActivity", cursor.getColumnName(i) + " : " + cursor.getString(i)); } } while (cursor.moveToNext()); cursor.close(); } } 
  • ¿Cómo funcionan las columnas unidas implícitas con los datos de los contactos de Android?
  • ¿Cómo actualizar el contacto existente?
  • Agregue RawContact para agregarlo a un contacto existente
  • ¿Cómo utilizar yahoo contacto api en la aplicación android?
  • ¿Cómo puedo obtener un groupId / GroupName de un contacto en Android?
  • Obtenga todos los nombres y números de contacto como una lista de cadenas en Android
  • ¿Cómo insertar la información de contacto en el contacto existente en Android 1.6?
  • Diferencia entre RawContacts.CONTENT_URI y ContactsContract.Contacts.CONTENT_URI en android
  • Recuperar imagen predeterminada del contacto de Android
  • Aplicación de copia de seguridad y sincronización de contactos
  • Android: ¿Cómo importar el contacto desde el teléfono?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.