ContactsContract.RawContacts 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 para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada.
[Android.Runtime.Register("android/provider/ContactsContract$RawContacts", DoNotGenerateAcw=true)]
public sealed class ContactsContract.RawContacts : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$RawContacts", DoNotGenerateAcw=true)>]
type ContactsContract.RawContacts = class
inherit Object
- Herencia
- Atributos
Comentarios
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. Los adaptadores de sincronización y las aplicaciones de administración de contactos son los principales consumidores de esta API.
<h3>Aggregation</h3>
En cuanto se inserta un contacto sin procesar o cada vez que cambian sus datos constituyentes, el proveedor comprobará si el contacto sin procesar coincide con otros contactos sin procesar existentes y, si es así, lo agregará con ellos. El cambio del RawContacts campo refleja la agregación en la #CONTACT_ID tabla, que es la referencia al contacto agregado.
Los cambios en el nombre estructurado, la organización, el número de teléfono, la dirección de correo electrónico o el alias desencadenan una nueva agregación.
Consulte también AggregationExceptions para obtener un mecanismo para controlar la agregación mediante programación.
<h3>Operations</h3><dl><dt><b>Insert</b></dt><dd>
Los contactos sin procesar se pueden insertar incrementalmente o en un lote. El método incremental es más tradicional pero menos eficaz. Solo se debe usar si no hay valores Data disponibles en el momento en que se crea el contacto sin procesar:
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, accountType);
values.put(RawContacts.ACCOUNT_NAME, accountName);
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
</p>
Una vez Data que los valores estén disponibles, insértelos. Por ejemplo, aquí se muestra cómo insertar un nombre:
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "Mike Sullivan");
getContentResolver().insert(Data.CONTENT_URI, values);
</p>
El método por lotes es, en gran medida, preferido. Inserta el contacto sin procesar y sus filas de datos constituyentes en una sola transacción de base de datos y provoca como máximo un paso de agregación.
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
...
int rawContactInsertIndex = ops.size();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, accountType)
.withValue(RawContacts.ACCOUNT_NAME, accountName)
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan")
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
</p>
Tenga en cuenta el uso de ContentProviderOperation.Builder#withValueBackReference(String, int) para hacer referencia al valor de índice as-yet-unknown del contacto sin procesar insertado en la primera operación.
<dt><b>Update</b></dt><dd>
Los contactos sin procesar se pueden actualizar incrementalmente o en un lote. El modo por lotes debe usarse siempre que sea posible. Los procedimientos y consideraciones son análogos a los documentados anteriormente para las inserciones.
</dd><dt><b>Delete</b></dt><dd>
Cuando se elimina un contacto sin procesar, todas sus filas de datos, así como StatusUpdates, AggregationExceptions, PhoneLookup filas se eliminan automáticamente. Cuando se eliminan todos los contactos sin procesar asociados a una Contacts fila, la Contacts propia fila también se elimina automáticamente.
La invocación de resolver.delete(...), no elimina inmediatamente una fila de contactos sin procesar. En su lugar, establece la #DELETED marca en el contacto sin procesar y quita el contacto sin procesar de su contacto agregado. A continuación, el adaptador de sincronización elimina el contacto sin procesar del servidor y finaliza la eliminación resolver.delete(...) del lado del teléfono llamando de nuevo y pasando el parámetro de ContactsContract#CALLER_IS_SYNCADAPTER consulta.
Algunos adaptadores de sincronización son de solo lectura, lo que significa que solo sincronizan los cambios del lado servidor en el teléfono, pero no en la inversa. Si uno de esos contactos sin procesar está marcado para su eliminación, permanecerá en el teléfono. Sin embargo, será eficazmente invisible, ya que no formará parte de ningún contacto agregado. </Dd>
<dt><b>Query</b></dt><dd>
Es fácil encontrar todos los contactos sin procesar en un contacto:
Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
new String[]{RawContacts._ID},
RawContacts.CONTACT_ID + "=?",
new String[]{String.valueOf(contactId)}, null);
</p>
Para buscar contactos sin procesar dentro de una cuenta específica, puede colocar el nombre de la cuenta y escribir la selección o pasarlos como parámetros de consulta. Este último enfoque es preferible, especialmente cuando se puede reutilizar el URI:
Uri rawContactUri = RawContacts.CONTENT_URI.buildUpon()
.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName)
.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType)
.build();
Cursor c1 = getContentResolver().query(rawContactUri,
RawContacts.STARRED + "<>0", null, null, null);
...
Cursor c2 = getContentResolver().query(rawContactUri,
RawContacts.DELETED + "<>0", null, null, null);
</p>
La mejor manera de leer un contacto sin procesar junto con todos los datos asociados a él es mediante el Entity directorio . Si el contacto sin procesar tiene filas de datos, el cursor de entidad contendrá una fila para cada fila de datos. Si el contacto sin procesar no tiene filas de datos, el cursor seguirá conteniendo una fila con la información de nivel de contacto sin procesar.
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
Uri entityUri = Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
Cursor c = getContentResolver().query(entityUri,
new String[]{RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1},
null, null, null);
try {
while (c.moveToNext()) {
String sourceId = c.getString(0);
if (!c.isNull(1)) {
String mimeType = c.getString(2);
String data = c.getString(3);
...
}
}
} finally {
c.close();
}
</p></dd></dl><h2>Columns</h2>
<table class="jd-sumtable"><tr><th colspan='4'RawContacts></th></tr tr><><td>long</td><td>#_ID< td td><td td>read-only</td td td><>Row ID. Los adaptadores de sincronización deben intentar conservar los identificadores de fila durante las actualizaciones. Es decir, es mucho mejor que un adaptador de sincronización actualice un contacto sin procesar en lugar de eliminarlo y volver a insertarlo.</td></tr tr><td><>long</td td><td>#CONTACT_ID< td td><>read-only</td td td><>El identificador de la fila de la ContactsContract.Contacts tabla a la que pertenece este contacto sin formato. Los contactos sin procesar se vinculan a los contactos mediante el #AGGREGATION_MODE proceso de agregación, que el campo y AggregationExceptions.</td></tr tr td><><>int</td><td td>#AGGREGATION_MODE< td td><>read/write</td td><>Mecanismo que permite el control mediante programación del proceso de agregación. Los valores permitidos son #AGGREGATION_MODE_DEFAULT, #AGGREGATION_MODE_DISABLED y #AGGREGATION_MODE_SUSPENDED. Vea también AggregationExceptions.</td></tr tr><td><>int</td><td td td>#DELETED<><> read/write</td td><>La marca "deleted": "0" de forma predeterminada, "1" si la fila se ha marcado para su eliminación. Cuando android.content.ContentResolver#delete se llama a en un contacto sin procesar, se marca para su eliminación y se quita de su contacto agregado. El adaptador de sincronización elimina el contacto sin procesar en el servidor y, a continuación, llama a ContactResolver.delete una vez más, esta vez pasando el ContactsContract#CALLER_IS_SYNCADAPTER parámetro de consulta para finalizar la eliminación de datos.</td></tr tr><tr><td>int</td><td td td>#STARRED<><> read/write</td td><>Indicador de contactos favoritos: '1' si favorito, '0' de lo contrario. El cambio de este campo afecta inmediatamente al contacto agregado correspondiente: si hay contactos sin procesar en ese contacto agregado con estrella, el propio contacto se marca como estrellado.</td></tr tr tr><><td>String</td><td td>#CUSTOM_RINGTONE< td><td>read/write</td td><>A tono personalizado asociado a un contacto sin procesar. Normalmente, este es el URI devuelto por una actividad iniciada con la android.media.RingtoneManager#ACTION_RINGTONE_PICKER intención. Para tener un efecto en el valor correspondiente del contacto agregado, este campo debe establecerse en el momento en que se inserta el contacto sin procesar. Para establecer un tono de llamada personalizado en un contacto, use el campo ContactsContract.Contacts#CUSTOM_RINGTONE Contacts.CUSTOM_RINGTONE en su lugar.</td></tr tr><><td>int</td td><td>#SEND_TO_VOICEMAILtd<><> read/write</td td><>Indicador de si las llamadas de este contacto sin procesar deben reenviarse directamente al correo de voz ('1') o no ('0'). Para tener un efecto en el valor correspondiente del contacto agregado, este campo debe establecerse en el momento en que se inserta el contacto sin procesar.</td/tr tr><td><>String</td><td td><> td td#ACCOUNT_NAME<>read/write-once</td td td><>El nombre de la instancia de cuenta a la que pertenece esta fila, que cuando se empareja con < identifica una cuenta específica.>#ACCOUNT_TYPE Por ejemplo, esta será la dirección de Gmail si es una cuenta de Google. Debe establecerse en el momento en que se inserta el contacto sin procesar y nunca se cambia después.</td/tr tr><td><>String</td><td td><> td td#ACCOUNT_TYPE<>read/write-once</td td td><><>
Tipo de cuenta a la que pertenece esta fila, que cuando se empareja con #ACCOUNT_NAME identifica una cuenta específica. Debe establecerse en el momento en que se inserta el contacto sin procesar y nunca se cambia después.
Para garantizar la unicidad, se deben elegir nuevos tipos de cuenta según la convención de nomenclatura de paquetes Java. Por lo tanto, una cuenta de Google es de tipo "com.google".
</td/tr tr><td><>String</td><td td><> td td#DATA_SET<>read/write-once</td td td><><>
Conjunto de datos dentro de la cuenta a la que pertenece esta fila. Esto permite que varios adaptadores de sincronización para el mismo tipo de cuenta distingan entre los datos de los demás. La combinación de #ACCOUNT_TYPE, #ACCOUNT_NAMEe #DATA_SET identifica un conjunto de datos asociado a un único adaptador de sincronización.
Esto está vacío de forma predeterminada y es completamente opcional. Solo debe rellenarse si varios adaptadores de sincronización escriben datos distintos para el mismo tipo de cuenta y nombre de cuenta.
Debe establecerse en el momento en que se inserta el contacto sin procesar y nunca se cambia después.
</td/tr tr><td><>String</td><td td><> td td#SOURCE_ID<>read/write</td td><>String que identifica de forma única esta fila a su cuenta de origen.<> Normalmente, se establece en el momento en que se inserta el contacto sin procesar y nunca se cambia después. La única excepción notable es un nuevo contacto sin procesar: tendrá un nombre de cuenta y un tipo (y posiblemente un conjunto de datos), pero no un identificador de origen. Esto indica al adaptador de sincronización que se debe crear un nuevo contacto en el lado servidor y su identificador almacenado en el campo de SOURCE_ID correspondiente en el teléfono.
</td></tr tr><td><>int</td td><td td>#VERSION< td><>read-only</td td><>Número de versión que se actualiza cada vez que cambia esta fila o sus datos relacionados. Este campo se puede usar para el bloqueo optimista de un contacto sin procesar.
</td/tr tr td><><>int</td><td td><> td#DIRTY<>read/write</td td><>marca que indica que < ha cambiado y esta fila debe sincronizarse con su propia cuenta.>#VERSION El valor se establece en "1" automáticamente cada vez que cambia el contacto sin procesar, a menos que el URI tenga el ContactsContract#CALLER_IS_SYNCADAPTER parámetro de consulta especificado. El adaptador de sincronización siempre debe proporcionar este parámetro de consulta para evitar la sincronización innecesaria: el usuario cambia algunos datos en el servidor, el adaptador de sincronización actualiza el contacto en el teléfono (sin la marca CALLER_IS_SYNCADAPTER), que establece la marca DIRTY, que desencadena una sincronización para llevar los cambios al servidor.
</td></tr tr><td><>String</td td><td>#SYNC1< td td><>read/write</td td><>Columna genérica proporcionada para uso arbitrario mediante adaptadores de sincronización. El proveedor de contenido almacena esta información en nombre del adaptador de sincronización, pero no la interpreta de ninguna manera.
</td/tr tr><td><>String</td><td td><> td td#SYNC2<>read/write</td td><>Columna genérica para su uso por adaptadores de sincronización.<>
</td/tr tr><td><>String</td><td td><> td td#SYNC3<>read/write</td td><>Columna genérica para su uso por adaptadores de sincronización.<>
</td/tr tr><td><>String</td><td td><> td td#SYNC4<>read/write</td td><>Columna genérica para su uso por adaptadores de sincronización.<>
</td></tr></table>
Java documentación para android.provider.ContactsContract.RawContacts.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Campos
| Nombre | Description |
|---|---|
| ContentItemType |
El tipo MIME de los resultados cuando se anexa un identificador de contacto sin procesar a |
| ContentType |
El tipo MIME de los resultados de |
Propiedades
| Nombre | Description |
|---|---|
| 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 contacto sin procesar que coincidan con los criterios de selección. |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| JniPeerMembers |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (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
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| Equals(Object) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| 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 para el objeto . (Heredado de Object) |
| GetLocalAccountName(Context) |
Valor predeterminado que se usa para |
| GetLocalAccountType(Context) |
Valor predeterminado que se usa para |
| 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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, 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
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. (Heredado de JavaObject) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Constantes para la tabla de contactos sin procesar, que contiene una fila de información de contacto para cada persona de cada cuenta sincronizada. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |