studio significa que nombre información informacion google ejemplo desde cuenta contacto como celular cambiar activity android android-contacts contactscontract

android - significa - Modificar información de contacto



que significa informacion de contacto (1)

Estoy tratando de insertar y actualizar una información sobre un contacto existente, por lo que he creado una aplicación de ejemplo para desarrollar la funcionalidad. Lo único que quiero que haga mi aplicación de muestra es insertar (o, si está presente) actualizar una dirección de correo electrónico en un contacto.

Estoy seleccionando un contacto a través del sistema. Intent.

startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);

El URI que se devuelve es el del Contact ( RawContact ?) Que se seleccionó y viene en esta forma: content://com.android.contacts/contacts/lookup/0r2-2A90214945/2 .

Puedo retirar todos los elementos de Data ( RawContact ?) Sobre esto realizando el siguiente código:

Cursor cursor = contentResolver.query(mContactUri, null, null, null, null); try { if (cursor.moveToFirst()) { for(int i=0; i < cursor.getColumnCount(); i++) { String message = cursor.getColumnName(i); Log.v("", message); } } } finally { cursor.close(); }

A partir de esto, debería poder determinar si el contacto ya tiene un miembro de CommonDataTypes.Email Data :

cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;

Y luego realice una de las siguientes acciones para Insert o Update los Data :

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation.newInsert(mContactUri) .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) .withValue(Email.DISPLAY_NAME, "[email protected]") .withValue(Email.TYPE, Email.TYPE_HOME) .build()); getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

Pero esto me da una excepción: java.lang.UnsupportedOperationException: URI: content://com.android.contacts/contacts/lookup/0r2-2A90314945/2, calling user:

Esperemos que alguien pueda ver lo que me he perdido.

PS, estoy usando estos permisos:

<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" />


La gente de Android necesita actualizar su documentation . En realidad, me sirvió para hacerme saber menos sobre lo que estaba sucediendo de lo que me hubiera dado por adivinar. Sugiere que puede retirar un Contact , que contendrá muchos RawContacts que contendrán Data .

Esa interpretación es completamente errónea. Los datos de ContactContracts son, en cambio, tres tablas de base de datos diarias normales promedio *:

ContactContract Tablas

Mesa: Contacts

Acceso URI: Contacts.CONTENT_URI

Clave principal **: Data._ID

Descripción:

Esta tabla contiene información sobre un contacto (cuando se agregó, cuál es su ícono de usuario, tiene un tono de llamada personalizado).

Relación: tiene una relación de 1 a muchos con la tabla RawContact .

Tabla: RawContacts

Acceso URI: RawContacts.CONTENT_URI

Clave principal: Data._ID

Clave foránea **: Data.CONTACT_ID

Descripción:

Esta tabla contiene información sobre un conjunto relacionado de elementos de datos. Un RawContact podría contener el tipo de correo electrónico, el nombre de visualización del correo electrónico, el número de teléfono, el nombre de visualización del teléfono, etc. Un RawContact se puede agregar a otros RawContactos para hacer que un Contact sea ​​visto por un usuario. Un contacto puede contener solo un contacto directo.

Relación: tiene una relación de 1 a muchos con la tabla de Data .

Tabla: Data

Acceso URI: Data.CONTENT_URI

Clave principal: Data._ID

Clave Data.RAW_CONTACT_ID : Data.RAW_CONTACT_ID

Descripción:

Esta tabla contiene un solo campo de información. Una dirección de correo electrónico, un número de teléfono, un tipo de número de teléfono (hogar / trabajo), un apodo, un nombre para mostrar.

En respuesta a la pregunta.

He cargado todo el proyecto de muestra en GitHub para permitir que otros vean cómo consultar, actualizar e insertar registros usando ContactContract.

Puede encontrar el proyecto para descargar aquí: https://github.com/gwoodhouse/ContactContractSample

Si solo quiere ver el código java que realiza la consulta / actualización / insertar, aquí está el archivo de clase: https://github.com/gwoodhouse/ContactContractSample/blob/master/ContactsIntegration/src/com/woodhouse/example/activity/ContactsIntegrationActivity.java

¡Espero que esto ayude!

* No es una tabla, pero un ContentProvider

** No es estrictamente cierto.