ContactsContract.Data Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 #DATA15
de . 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<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
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<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
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<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
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 + "=?" + " 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 + "=?" + " 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_TYPE
li 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
-#SYNC4
en su lugar .
</td/tr tr><td>><Any type</td td><<>#SYNC1
br 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_PACKAGE
de 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_PACKAGE
de 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 |
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 |
Propiedades
Class |
Devuelve la clase en tiempo de ejecución de este |
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 |
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. |