Compartir a través de


ContactsContract.Data Clase

Definición

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

[Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)]
public sealed class ContactsContract.Data : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)>]
type ContactsContract.Data = class
    inherit Object
Herencia
ContactsContract.Data
Atributos

Comentarios

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar. Cada fila de la tabla de datos se usa normalmente para almacenar un solo fragmento de información de contacto (por ejemplo, un número de teléfono) y sus metadatos asociados (por ejemplo, si es un número de trabajo o de hogar).

<h3>Tipos de datos</h3>

Los datos son una tabla genérica que puede contener cualquier tipo de datos de contacto. El tipo de datos almacenados en una fila determinada se especifica mediante el valor de #MIMETYPE la fila, que determina el significado de las columnas genéricas #DATA1 a través #DATA15de . Por ejemplo, si el tipo de datos es CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE, la columna #DATA1 almacena el número de teléfono, pero si el tipo de datos es CommonDataKinds.Email Email.CONTENT_ITEM_TYPE, #DATA1 almacena la dirección de correo electrónico. Los adaptadores de sincronización y las aplicaciones pueden introducir sus propios tipos de datos.

ContactsContract define un pequeño número de tipos de datos predefinidos, por ejemplo CommonDataKinds.Phone, , CommonDataKinds.Email etc. Como comodidad, estas clases definen alias específicos de tipo de datos para DATA1, etc. Por ejemplo, CommonDataKinds.Phone Phone.NUMBER es igual que ContactsContract.Data Data.DATA1.

#DATA1 es una columna indizada y se debe usar para el elemento de datos que se espera que se use con más frecuencia en las selecciones de consulta. Por ejemplo, en el caso de una fila que represente direcciones #DATA1 de correo electrónico probablemente se debe usar para la propia dirección de correo electrónico, mientras que #DATA2 se puede usar para información auxiliar como el tipo de dirección de correo electrónico.

Por convención, #DATA15 se usa para almacenar blobs (datos binarios).

El adaptador de sincronización de un tipo de cuenta determinado debe controlar correctamente todos los tipos de datos usados en los contactos sin procesar correspondientes. De lo contrario, podría dar lugar a datos perdidos o dañados.

Del mismo modo, debe evitar introducir nuevos tipos de datos para los tipos de cuenta de otro usuario. Por ejemplo, si agrega una fila de datos para "canción favorita" a un contacto sin procesar propiedad de una cuenta de Google, no se sincronizará con el servidor, ya que el adaptador de sincronización de Google no sabe cómo controlar este tipo de datos. Por lo tanto, los nuevos tipos de datos se suelen introducir junto con los nuevos tipos de cuenta, es decir, los nuevos adaptadores de sincronización.

<h3>Operaciones< por lotes/h3>

Las filas de datos se pueden insertar, actualizar o eliminar mediante los métodos tradicionales ContentResolver#insert, ContentResolver#update y ContentResolver#delete , sin embargo, el mecanismo más reciente basado en un lote de ContentProviderOperation demostrará ser una mejor opción en casi todos los casos. Todas las operaciones de un lote se ejecutan en una sola transacción, lo que garantiza que el estado del lado telefónico y del lado servidor de un contacto sin procesar siempre sean coherentes. Además, el enfoque basado en lotes es mucho más eficaz: no solo son las operaciones de base de datos más rápidas cuando se ejecutan en una sola transacción, sino que también el envío de un lote de comandos al proveedor de contenido ahorra mucho tiempo en el cambio de contexto entre el proceso y el proceso en el que se ejecuta el proveedor de contenido.

El lado inverso del uso de operaciones por lotes es que un lote grande puede bloquear la base de datos durante mucho tiempo, lo que impide que otras aplicaciones accedan a datos y puedan provocar solicitudes de incorporación de cambios (cuadros de diálogo "Aplicación que no responde".)

Para evitar estos bloqueos de la base de datos, asegúrese de insertar "puntos de rendimiento" en el lote. Un punto de rendimiento indica al proveedor de contenido que antes de ejecutar la siguiente operación puede confirmar los cambios que ya se han realizado, producir a otras solicitudes, abrir otra transacción y continuar con las operaciones de procesamiento. Un punto de rendimiento no confirmará automáticamente la transacción, sino solo si hay otra solicitud en espera en la base de datos. Normalmente, un adaptador de sincronización debe insertar un punto de rendimiento al principio de cada secuencia de operación de contacto sin procesar en el lote. Vea ContentProviderOperation.Builder#withYieldAllowed(boolean).

<h3>Operations</h3><dl><dt><b>Insert</b></dt><dd>

Se puede insertar una fila de datos individual mediante el método tradicional ContentResolver#insert(Uri, ContentValues) . Siempre se deben insertar varias filas como un lote.

Ejemplo de una inserción tradicional:

ContentValues values = new ContentValues();
            values.put(Data.RAW_CONTACT_ID, rawContactId);
            values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
            values.put(Phone.NUMBER, "1-800-GOOG-411");
            values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
            values.put(Phone.LABEL, "free directory assistance");
            Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);

Lo mismo se hace con ContentProviderOperations:

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                     .withValue(Data.RAW_CONTACT_ID, rawContactId)
                     .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                     .withValue(Phone.NUMBER, "1-800-GOOG-411")
                     .withValue(Phone.TYPE, Phone.TYPE_CUSTOM)
                     .withValue(Phone.LABEL, "free directory assistance")
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

</p><dt><b>Update</b></dt><dd>

Al igual que con la inserción, la actualización se puede realizar incrementalmente o como un lote, el modo por lotes es el método preferido:

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
                     .withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
                     .withValue(Email.DATA, "somebody@android.com")
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

</p></dd><dt><b>Delete</b></dt><dd>

Al igual que con la inserción y actualización, la eliminación se puede realizar mediante el ContentResolver#delete método o mediante contentProviderOperation:

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();

            ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
                     .withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
                     .build());
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

</p></dd><dt><b>Query</b></dt><dd>

<dl><dt>Búsqueda de todos los datos de un tipo determinado para un contacto< o dt><dd determinado>

Cursor c = getContentResolver().query(Data.CONTENT_URI,
                     new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
                     Data.CONTACT_ID + &quot;=?&quot; + " AND "
                             + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                     new String[] {String.valueOf(contactId)}, null);

</p>

</dd><dt>Búsqueda de todos los datos de un tipo determinado para un determinado contacto< sin procesar/dt><dd>

Cursor c = getContentResolver().query(Data.CONTENT_URI,
                     new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
                     Data.RAW_CONTACT_ID + &quot;=?&quot; + " AND "
                             + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                     new String[] {String.valueOf(rawContactId)}, null);

</dd><dt>Buscar todos los datos de un determinado contacto< sin procesar/dt><dd> La mayoría de los adaptadores de sincronización querrán leer todas las filas de datos de un contacto sin procesar junto con el propio contacto sin procesar. Para ello, debe usar .RawContactsEntity Consulte también RawContacts. </dd></dl></p></dd></dl><h2>Columns</h2>

Hay muchas columnas disponibles a través de una Data#CONTENT_URI consulta. Para obtener el mejor rendimiento, debe especificar explícitamente una proyección para solo las columnas que necesite.

<table class="jd-sumtable"><tr><th colspan='4'Data<>/th></tr tr<>td><style="width: 7em;">long</td td><style="width: 20em;">#_ID</td><td style="width: 5em;">read-only</td td>><Row ID. El adaptador de sincronización debe intentar conservar los identificadores de fila durante las actualizaciones. En otras palabras, sería una mala idea eliminar y volver a insertar una fila de datos. Un adaptador de sincronización siempre debe realizar una actualización en su lugar.</td/tr tr><td><>String</td><td td#MIMETYPE>< td td>><read/write-once</td td td<>><>

Tipo MIME del elemento representado por esta fila. Algunos ejemplos de tipos MIME comunes son: <ul<>liCommonDataKinds.StructuredName StructuredName.CONTENT_ITEM_TYPE<>/li><<>CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE/li><<CommonDataKinds.Email Email.CONTENT_ITEM_TYPE> li/li/li<><>CommonDataKinds.Photo Photo.CONTENT_ITEM_TYPE/><CommonDataKinds.Organization Organization.CONTENT_ITEM_TYPE<>li li/>><CommonDataKinds.Im Im.CONTENT_ITEM_TYPE<li/li><<CommonDataKinds.Nickname Nickname.CONTENT_ITEM_TYPE> li/li/>><<CommonDataKinds.Note Note.CONTENT_ITEM_TYPEli li/><<CommonDataKinds.StructuredPostal StructuredPostal.CONTENT_ITEM_TYPE>li li/li><CommonDataKinds.GroupMembership GroupMembership.CONTENT_ITEM_TYPE>< li/li li/li<<CommonDataKinds.Website Website.CONTENT_ITEM_TYPE>> li/li><>CommonDataKinds.Event Event.CONTENT_ITEM_TYPE<><li><CommonDataKinds.Relation Relation.CONTENT_ITEM_TYPE/li><li>CommonDataKinds.SipAddress SipAddress.CONTENT_ITEM_TYPE</li></li/ul>

</td/tr tr<>td><>long</td><td td#RAW_CONTACT_ID<> td td<>>read/write-once</td td><>El identificador de la fila de la RawContacts tabla a la que pertenecen estos datos.<></td/tr tr<>td><>int</td td<>td><#IS_PRIMARY td><>read/write</td td td>><Indica si se trata de la entrada principal de su tipo para el contacto sin procesar al que pertenece.>< "1" si es true, "0" si es false. </td></tr tr><tr<>td>int</td<>td td#IS_SUPER_PRIMARY>< td><>read/write</td td>><Indica si se trata de la entrada principal de su tipo para el contacto agregado al que pertenece. Cualquier registro de datos que sea "super principal" también debe ser "principal". Por ejemplo, la entrada super-principal se puede interpretar como el valor de contacto predeterminado de su tipo (por ejemplo, el número de teléfono predeterminado que se usará para el contacto).</td></tr tr><td><>int</td td><td<#DATA_VERSION> td td>><read-only</td td><>La versión de este registro de datos. Cada vez que cambia la fila de datos, la versión sube. Este valor aumenta de forma monotónica.</td></tr tr><<>td>Any type</td td>#DATA1><<br>><#DATA13><#DATA14<#DATA12><#DATA11><#DATA10><#DATA3#DATA4><<#DATA2#DATA9><>#DATA6><#DATA7#DATA5><><<>#DATA8/<#DATA15>td td>><read/write</td td td><>

Columnas de datos genéricas. El significado de cada columna viene determinado por .#MIMETYPE Por convención, #DATA15 se usa para almacenar blobs (datos binarios).

No se deben usar columnas de datos cuyo significado no esté definido explícitamente para un MIMETYPE determinado. No hay ninguna garantía de que ningún adaptador de sincronización los conserve. Los propios adaptadores de sincronización no deben usar estas columnas, sino que deben usar #SYNC1-#SYNC4en su lugar .

</td/tr tr><td>><Any type</td td><<>#SYNC1br br><<>>#SYNC3<#SYNC4#SYNC2/td<>td>read/write</td td>><Generic columns for use by sync adapters.>< Por ejemplo, una fila Photo puede almacenar la dirección URL de la imagen en SYNC1, un estado (no cargado, carga, cargado, error) en SYNC2, número de versión del lado servidor en SYNC3 y código de error en SYNC4.</td></tr></table>

Algunas columnas de la actualización de estado asociada más reciente también están disponibles a través de una combinación implícita.

<table class="jd-sumtable"><tr><th colspan='4'Join> with<StatusUpdates /th<>/tr tr<>><td style="width: 7em;">int</td td><style="width: 20em;">#PRESENCE</td><td style="width: 5em;">estado de presencia de td td td><>de solo< lectura vinculado a esta fila de datos. Compare con #CONTACT_PRESENCE, que contiene la presencia del contacto en todas las filas de mensajería instantánea. Consulte StatusUpdates para obtener definiciones de estado individuales. El proveedor puede optar por no almacenar este valor en el almacenamiento persistente. La expectativa es que el estado de presencia se actualice periódicamente. </td/tr tr td><><>String</td td<>td>#STATUS< td td>><read-only</td td<>>Última actualización de estado vinculada a esta fila de datos.<></td></tr tr><td><>long</td td<>td td><#STATUS_TIMESTAMP td><>read-only</td td td<>>El tiempo absoluto en milisegundos cuando se insertó o actualizó el estado más reciente para esta fila de datos.</td/tr tr><td><>String</td><td td#STATUS_RES_PACKAGE<> td td<>>read-only</td td td<>>El paquete que contiene recursos para este estado: etiqueta e icono.<></td></tr tr<>td>><long</td td><td td<#STATUS_LABEL> td><>read-only</td td><>El identificador de recurso de la etiqueta que describe el origen de la actualización de estado vinculada a esta fila de datos. El ámbito #STATUS_RES_PACKAGEde este recurso es .</td></tr tr<>td>><long</td td><td td#STATUS_ICON>< td>><read-only</td td td><>El identificador de recurso del icono del origen de la actualización de estado vinculada a esta fila de datos. El ámbito #STATUS_RES_PACKAGEde este recurso es .</td></tr></table>

Algunas columnas del contacto sin procesar asociado también están disponibles a través de una combinación implícita. Las otras columnas se excluyen como desinteresada en este contexto.

<table class="jd-sumtable"><tr><th colspan='4'Join> with<ContactsContract.RawContacts /th<>/tr tr<>><td style="width: 7em;">long</td td><style="width: 20em;">#CONTACT_ID</td><td style="width: 5em;">read-only</td td>><El identificador de la fila de la tabla a la Contacts que pertenecen estos datos.</td/tr tr<>td>><int</td td><td#AGGREGATION_MODE<>/td td><>read-only</td td<>>ver .< RawContacts></td/tr tr<>td>><int</td td><td#DELETED<>/td td><>read-only</td td<>>ver .< RawContacts></td></tr></table>

La columna id. de la tabla ContactsContract.Contacts de contactos agregada asociada está disponible a través de la combinación implícita a la RawContacts tabla, consulte anteriormente. Las columnas restantes de esta tabla también están disponibles a través de una combinación implícita. Esto facilita la búsqueda por el valor de un único elemento de datos, como la dirección de correo electrónico.

<table class="jd-sumtable"><tr><th colspan='4'Join> with<ContactsContract.Contacts /th<>/tr tr<>><td style="width: 7em;">String</td td><style="width: 20em;">#LOOKUP_KEY</td><td style="width: 5em;">read-only</td td><>See ContactsContract.Contacts</td></tr><><td>String</td<>td<#DISPLAY_NAME> td><>td read-only</td>><See<ContactsContract.Contacts /td<>/tr tr>><<td>long</td<>td>#PHOTO_ID< td td><>read-only</td td<>>ver .< ContactsContract.Contacts/td/tr tr<>td>><int</td td><td#IN_VISIBLE_GROUP<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td/tr tr<>td>><int</td td><td#HAS_PHONE_NUMBER<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td/tr tr<>td>><int</td td><td#STARRED<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td></tr tr tr<><>td>String</td><td td>#CUSTOM_RINGTONE< td td><>read-only</td td<>>ver .< ContactsContract.Contacts/td/tr tr<>td>><int</td td><td#SEND_TO_VOICEMAIL<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td/tr tr<>td>><int</td td><td#CONTACT_PRESENCE<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td></tr tr tr<><>td>String</td><td td>#CONTACT_STATUS< td td><>read-only</td td<>>ver .< ContactsContract.Contacts/td/tr tr><td>><long</td><td td#CONTACT_STATUS_TIMESTAMP<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td></tr tr tr<><>td>String</td><td td>#CONTACT_STATUS_RES_PACKAGE< td td><>read-only</td td<>>ver .< ContactsContract.Contacts/td/tr tr><td>><long</td><td td#CONTACT_STATUS_LABEL<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td/tr tr><td>><long</td><td td#CONTACT_STATUS_ICON<>/td td><>read-only</td td<>>ver .< ContactsContract.Contacts></td></tr></table>

Documentación de Java para android.provider.ContactsContract.Data.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Campos

ContentType

Tipo MIME de los resultados de #CONTENT_URI.

ExtraAddressBookIndex

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

ExtraAddressBookIndexCounts

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

ExtraAddressBookIndexTitles

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

VisibleContactsOnly

Parámetro booleano para Data#CONTENT_URI.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
ContentUri

El URI de estilo content:// para esta tabla, que solicita un directorio de filas de datos que coincidan con los criterios de selección.

Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
JniPeerMembers

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

PeerReference

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Dispose()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
Dispose(Boolean)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetContactLookupUri(ContentResolver, Uri)

Cree un android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI estilo Uri para la entrada primaria android.provider.ContactsContract.Contacts de la entrada especificada ContactsContract.Data .

GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
JavaFinalize()

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
ToArray<T>()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.Finalized()

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

GetJniTypeName(IJavaPeerable)

Constantes de la tabla de datos, que contiene puntos de datos vinculados a un contacto sin procesar.

Se aplica a