ContactsContract.Data Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto.
[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
- Herança
- Atributos
Comentários
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. Cada linha da tabela de dados normalmente é usada para armazenar uma única parte das informações de contato (como um número de telefone) e seus metadados associados (como se for um número de trabalho ou de casa).
<tipos> de dados h3</h3>
Os dados são uma tabela genérica que pode conter qualquer tipo de dados de contato. O tipo de dados armazenados em uma determinada linha é especificado pelo valor da #MIMETYPE linha, que determina o significado das colunas genéricas #DATA1 por meio #DATA15de . Por exemplo, se o tipo de dados for CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE, a coluna #DATA1 armazenará o número de telefone, mas se o tipo de dados for CommonDataKinds.Email Email.CONTENT_ITEM_TYPE, armazenará #DATA1 o endereço de email. Adaptadores e aplicativos de sincronização podem introduzir seus próprios tipos de dados.
ContactsContract define um pequeno número de tipos de dados predefinidos, por exemplo CommonDataKinds.Phone, CommonDataKinds.Email etc. Como conveniência, essas classes definem aliases específicos do tipo de dados para DATA1 etc. Por exemplo, CommonDataKinds.Phone Phone.NUMBER é o mesmo que ContactsContract.Data Data.DATA1.
#DATA1 é uma coluna indexada e deve ser usada para o elemento de dados que deve ser usado com mais frequência em seleções de consulta. Por exemplo, no caso de uma linha que representa endereços #DATA1 de email provavelmente deve ser usada para o endereço de email em si, enquanto #DATA2 etc pode ser usado para informações auxiliares como o tipo de endereço de email.
Por convenção, #DATA15 é usado para armazenar BLOBs (dados binários).
O adaptador de sincronização de um determinado tipo de conta deve lidar corretamente com todos os tipos de dados usados nos contatos brutos correspondentes. Caso contrário, isso poderá resultar em dados perdidos ou corrompidos.
Da mesma forma, você deve se abster de introduzir novos tipos de dados para tipos de conta de outras partes. Por exemplo, se você adicionar uma linha de dados para "música favorita" a um contato bruto pertencente a uma conta do Google, ela não será sincronizada com o servidor, pois o adaptador de sincronização do Google não sabe como lidar com esse tipo de dados. Assim, os novos tipos de dados normalmente são introduzidos junto com novos tipos de conta, ou seja, novos adaptadores de sincronização.
<Operações> do Lote h3</h3>
As linhas de dados podem ser inseridas/atualizadas/excluídas usando os métodos tradicionais ContentResolver#insertContentResolver#update eContentResolver#delete, no entanto, o mecanismo mais recente com base em um lote de ContentProviderOperation será uma opção melhor em quase todos os casos. Todas as operações em um lote são executadas em uma única transação, o que garante que o estado do lado do telefone e do servidor de um contato bruto seja sempre consistente. Além disso, a abordagem baseada em lote é muito mais eficiente: não só as operações de banco de dados são mais rápidas quando executadas em uma única transação, mas também o envio de um lote de comandos para o provedor de conteúdo economiza muito tempo na alternância de contexto entre o processo e o processo em que o provedor de conteúdo é executado.
O outro lado do uso de operações em lote é que um lote grande pode bloquear o banco de dados por muito tempo impedindo que outros aplicativos acessem dados e potencialmente causem ANRs (caixas de diálogo "Aplicativo Não Respondendo").
Para evitar esses bloqueios do banco de dados, insira "pontos de rendimento" no lote. Um ponto de rendimento indica ao provedor de conteúdo que, antes de executar a próxima operação, ele pode confirmar as alterações que já foram feitas, produzir para outras solicitações, abrir outra transação e continuar as operações de processamento. Um ponto de rendimento não confirmará automaticamente a transação, mas somente se houver outra solicitação aguardando no banco de dados. Normalmente, um adaptador de sincronização deve inserir um ponto de rendimento no início de cada sequência de operação de contato bruto no lote. Consulte ContentProviderOperation.Builder#withYieldAllowed(boolean).
<h3>Operations</h3><dl><dt><b>Insert</b></dt><dd>
Uma linha de dados individual pode ser inserida usando o método tradicional ContentResolver#insert(Uri, ContentValues) . Várias linhas sempre devem ser inseridas como um lote.
Um exemplo de uma inserção 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);
O mesmo feito usando 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>
Assim como ocorre com a inserção, a atualização pode ser feita incrementalmente ou como um lote, sendo o modo de lote o método preferencial:
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>
Assim como ocorre com a inserção e a atualização, a exclusão pode ser feita usando o ContentResolver#delete método ou usando uma 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>Localizando todos os dados de um determinado tipo para um determinado contato</dt><dd>
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>Localizando todos os dados de um determinado tipo para um determinado contato< bruto/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>Localizando todos os dados para um determinado contato< bruto/dt><dd> A maioria dos adaptadores de sincronização desejará ler todas as linhas de dados para um contato bruto, juntamente com o contato bruto em si. Para isso, você deve usar o RawContactsEntity. Consulte também RawContacts.
</dd></dl></p></dd></dl><h2>Columns</h2>
Muitas colunas estão disponíveis por meio de uma Data#CONTENT_URI consulta. Para obter o melhor desempenho, você deve especificar explicitamente uma projeção apenas para as colunas necessárias.
<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;">ID da linha td somente< leitura/td><>. O adaptador de sincronização deve tentar preservar as IDs de linha durante as atualizações. Em outras palavras, seria uma má ideia excluir e reinserir uma linha de dados. Um adaptador de sincronização sempre deve fazer uma atualização.</td/tr><tr><td>String</td td><><>/td td#MIMETYPE<>read/write-once</td><td td><>
O tipo MIME do item representado por essa linha. Exemplos de tipos MIME comuns são: <ul><li>CommonDataKinds.StructuredName StructuredName.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE</li><>CommonDataKinds.Email Email.CONTENT_ITEM_TYPE< li/li><>CommonDataKinds.Photo Photo.CONTENT_ITEM_TYPE<>< li>CommonDataKinds.Organization Organization.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.Im Im.CONTENT_ITEM_TYPE</li><>CommonDataKinds.Nickname Nickname.CONTENT_ITEM_TYPE< li/li li/li><li>CommonDataKinds.Note Note.CONTENT_ITEM_TYPE</li><li>CommonDataKinds.StructuredPostal StructuredPostal.CONTENT_ITEM_TYPE</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><li>CommonDataKinds.Relation Relation.CONTENT_ITEM_TYPE</li></>CommonDataKinds.SipAddress SipAddress.CONTENT_ITEM_TYPE<li></ul>
</td/tr><tr><td>long</td><><>/td td td#RAW_CONTACT_ID<>read/write-once</td td><td>A id da linha na tabela à < qual esses dados pertencem.>RawContacts</td></tr><tr><td>int</td></td td>#IS_PRIMARY< td><>read/write</td td><td>Se esta é a entrada primária do tipo para o contato bruto ao qual pertence. "1" se verdadeiro, "0" se falso.
</td></tr><tr><td>int</td></td td>#IS_SUPER_PRIMARY< td><>read/write</td td><td>Whether this is the primary entry of its kind for the aggregate contact it belongs to. Qualquer registro de dados "super primário" também deve ser "primário". Por exemplo, a entrada super primária pode ser interpretada como o valor de contato padrão do tipo (por exemplo, o número de telefone padrão a ser usado para o contato).</td/tr><tr><td>int</td td><><>/td td#DATA_VERSION<>read-only</td td><td>A versão deste registro de dados.<> Sempre que a linha de dados altera a versão aumenta. Esse valor está aumentando monotonicamente.</td/tr><tr><td>Qualquer tipo</td td><><>br#DATA1<>br#DATA2<>br#DATA3<>#DATA4<>br#DATA5<>br#DATA6<>#DATA7<>#DATA8<>#DATA9<>#DATA10<>#DATA11<>br br#DATA12<>br br#DATA13<>#DATA14<>/td#DATA15<td>read/write</td td><><>
Colunas de dados genéricas. O significado de cada coluna é determinado pelo #MIMETYPE. Por convenção, #DATA15 é usado para armazenar BLOBs (dados binários).
Colunas de dados cujo significado não é definido explicitamente para um determinado MIMETYPE não devem ser usadas. Não há nenhuma garantia de que qualquer adaptador de sincronização irá preservá-los. Os próprios adaptadores de sincronização também não devem usar essas colunas, mas devem usar #SYNC1-#SYNC4.
</td></tr><tr><td>Qualquer tipo</td><td>#SYNC1<br>#SYNC2<br>#SYNC3<>#SYNC4</td td td><>leitura/gravação</td td><>colunas genéricas para uso por adaptadores de sincronização. Por exemplo, uma linha foto pode armazenar a URL da imagem em SYNC1, um status (não carregado, carregando, carregado, erro) em SYNC2, número de versão do lado do servidor em SYNC3 e código de erro em SYNC4.</td></tr></table>
Algumas colunas da atualização de status associada mais recente também estão disponíveis por meio de uma junção 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;">status de presença de IM td td<></somente> leitura vinculado a essa linha de dados. Compare com #CONTACT_PRESENCE, que contém a presença do contato em todas as linhas de mensagens instantâneas. Consulte StatusUpdates as definições de status individuais. O provedor pode optar por não armazenar esse valor no armazenamento persistente. A expectativa é que o status de presença seja atualizado regularmente.
</td/tr><tr><td>String</td td><><>/td td#STATUS<>read-only</td td td><>Latest status update linked with this data row.<></td/tr><tr><td>long</td><><>/td td#STATUS_TIMESTAMP<>read-only</td td><td>O tempo absoluto em milissegundos quando o status mais recente foi inserido/atualizado para essa linha de dados.<></td/tr><tr><td>String</td td><><>/td td#STATUS_RES_PACKAGE<>read-only</td td><td>O pacote que contém recursos para este status: rótulo e ícone.<></td/tr><tr><td>long</td><><>/td td td#STATUS_LABEL<>read-only</td td><td>The resource ID of the label describing the source of status update linked to this data row.<> Esse recurso tem o escopo definido pelo #STATUS_RES_PACKAGE.</td/tr><tr><td>long</td><><>/td td td#STATUS_ICON<>read-only</td td><td>The resource ID of the icon for the source of the status update linked to this data row.<> Esse recurso tem o escopo definido pelo #STATUS_RES_PACKAGE.</td></tr></table>
Algumas colunas do contato bruto associado também estão disponíveis por meio de uma junção implícita. As outras colunas são excluídas como desinteressantes nesse 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;">somente< leitura/td><td>A ID da linha na tabela à Contacts qual esses dados pertencem.</td/tr><tr><td>int</td td><><>/td td#AGGREGATION_MODE<>read-only</td td><td>See .<>RawContacts</td/tr><tr><td>int</td td><><>/td td#DELETED<>read-only</td td><td>See .<>RawContacts</td></tr></table>
A coluna ID da tabela ContactsContract.Contacts de contatos agregada associada está disponível por meio da junção implícita à RawContacts tabela, consulte acima. As colunas restantes dessa tabela também estão disponíveis por meio de uma junção implícita. Isso facilita a pesquisa pelo valor de um único elemento de dados, como o endereço de email.
<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><tr><td>String</td td><>#DISPLAY_NAME</td td><>read-only</td td><td>SeeContactsContract.Contacts< /td></tr><tr><td>long</td td><>#PHOTO_ID</td td><>read-only</td><td td>See .ContactsContract.Contacts</td/tr><tr><td>int</td td><><>/td td#IN_VISIBLE_GROUP<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>int</td td><><>/td td#HAS_PHONE_NUMBER<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>int</td td><><>/td td#STARRED<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>String</td td><><>/td td#CUSTOM_RINGTONE<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>int</td td><><>/td td#SEND_TO_VOICEMAIL<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>int</td td><><>/td td#CONTACT_PRESENCE<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>String</td td><><>/td td#CONTACT_STATUS<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>long</td td><><>/td td#CONTACT_STATUS_TIMESTAMP<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>String</td td><><>/td td#CONTACT_STATUS_RES_PACKAGE<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>long</td td><><>/td td#CONTACT_STATUS_LABEL<>read-only</td td><td>See .<>ContactsContract.Contacts</td/tr><tr><td>long</td td><><>/td td#CONTACT_STATUS_ICON<>read-only</td td><td>See .<>ContactsContract.Contacts</td></tr></table>
Java documentação para android.provider.ContactsContract.Data.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Campos
| Nome | Description |
|---|---|
| ContentType |
O tipo MIME dos resultados de |
| ExtraAddressBookIndex |
Adicione esse parâmetro de consulta a um URI para obter contagens de linhas de volta agrupadas pelo índice do catálogo de endereços como extras de cursor. |
| ExtraAddressBookIndexCounts |
A matriz de contagens de grupo para o grupo correspondente. |
| ExtraAddressBookIndexTitles |
A matriz de títulos de índice do catálogo de endereços, que são retornados na mesma ordem que os dados no cursor. |
| VisibleContactsOnly |
Um parâmetro booliano para |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| ContentUri |
O URI de estilo content:// para esta tabela, que solicita um diretório de linhas de dados que correspondam aos critérios de seleção. |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| JniPeerMembers |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| Equals(Object) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| GetContactLookupUri(ContentResolver, Uri) |
Crie um |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| JavaFinalize() |
Obsoleto.
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. (Herdado de JavaObject) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
Constantes para a tabela de dados, que contém pontos de dados vinculados a um contato bruto. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |