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?
- Obtener los detalles de la organización de contacto en android?
- Configurar el tono de llamada personalizado de contacto, ¿cómo?
- Obtener el nombre y el correo electrónico de la lista de contactos es muy lento
- Importar contactos CSV en el teléfono Android 4
- Cómo seleccionar contactos exclusivos de android
- Uso de LibPhoneNumber google lib en Android
- ¿Puedo extender la base de datos de contactos de Androids?
- Cordova-plugin-contacts bloquea la aplicación
- Contactos de Android: Colocación / clasificación local incorrecta
- ¿Puedes determinar qué cambios de contacto tienen con registerContentObserver?
- Obtener el perfil de usuario / propietario de contacto URI y la imagen de usuario con API 8 en adelante
- ¿Leer contactos sin permiso?
- ContentObservers son inútiles
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(); } }
- Teclado Android. Antecedentes de Key
- Soft teclado no está presente, no se puede ocultar el teclado – Appium android