ContactsContract.RawContacts Classe

Definição

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta 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
Herança
ContactsContract.RawContacts
Atributos

Comentários

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada. Os adaptadores de sincronização e os aplicativos de gerenciamento de contatos são os principais consumidores dessa API.

<Agregação> h3</h3>

Assim que um contato bruto for inserido ou sempre que seus dados constituintes forem alterados, o provedor verificará se o contato bruto corresponde a outros contatos brutos existentes e, se assim for, o agregará com eles. A agregação é refletida na RawContacts tabela pela alteração do #CONTACT_ID campo, que é a referência ao contato de agregação.

Alterações no nome estruturado, organização, número de telefone, endereço de email ou apelido disparam uma nova agregação.

Consulte também AggregationExceptions um mecanismo para controlar a agregação programaticamente.

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

Contatos brutos podem ser inseridos incrementalmente ou em um lote. O método incremental é mais tradicional, mas menos eficiente. Ele só deverá ser usado se nenhum Data valor estiver disponível no momento em que o contato bruto for criado:

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>

Depois que Data os valores estiverem disponíveis, insira-os. Por exemplo, veja como inserir um nome:

values.clear();
            values.put(Data.RAW_CONTACT_ID, rawContactId);
            values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
            values.put(StructuredName.DISPLAY_NAME, &quot;Mike Sullivan&quot;);
            getContentResolver().insert(Data.CONTENT_URI, values);

</p>

O método do lote é de longe preferencial. Ele insere o contato bruto e suas linhas de dados constituintes em uma única transação de banco de dados e causa no máximo uma passagem de agregação.

ArrayList&lt;ContentProviderOperation&gt; ops =
                     new ArrayList&lt;ContentProviderOperation&gt;();
            ...
            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, &quot;Mike Sullivan&quot;)
                     .build());

            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

</p>

Observe o uso para ContentProviderOperation.Builder#withValueBackReference(String, int) se referir ao valor de índice ainda desconhecido do contato bruto inserido na primeira operação.

<dt><b>Atualização</b></dt><dd>

Os contatos brutos podem ser atualizados incrementalmente ou em um lote. O modo de lote deve ser usado sempre que possível. Os procedimentos e considerações são análogos aos documentados acima para inserções.

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

Quando um contato bruto é excluído, todas as linhas de dados, bem como as linhas StatusUpdates, AggregationExceptions, PhoneLookup, são excluídas automaticamente. Quando todos os contatos brutos associados a uma Contacts linha são excluídos, a Contacts linha em si também é excluída automaticamente.

A invocação de resolver.delete(...), não exclui imediatamente uma linha de contatos brutos. Em vez disso, ele define o #DELETED sinalizador no contato bruto e remove o contato bruto de seu contato agregado. Em seguida, o adaptador de sincronização exclui o contato bruto do servidor e finaliza a exclusão do lado do telefone chamando resolver.delete(...) novamente e passando o parâmetro de ContactsContract#CALLER_IS_SYNCADAPTER consulta.

Alguns adaptadores de sincronização são somente leitura, o que significa que eles sincronizam apenas as alterações do lado do servidor no telefone, mas não o inverso. Se um desses contatos brutos estiver marcado para exclusão, ele permanecerá no telefone. No entanto, ele será efetivamente invisível, pois não fará parte de nenhum contato agregado. </dd>

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

É fácil encontrar todos os contatos brutos em um Contato:

Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
                     new String[]{RawContacts._ID},
                     RawContacts.CONTACT_ID + "=?",
                     new String[]{String.valueOf(contactId)}, null);

</p>

Para localizar contatos brutos em uma conta específica, você pode colocar o nome da conta e digitar na seleção ou passá-los como parâmetros de consulta. A última abordagem é preferível, especialmente quando você pode reutilizar o 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 + "&lt;&gt;0", null, null, null);
            ...
            Cursor c2 = getContentResolver().query(rawContactUri,
                     RawContacts.DELETED + "&lt;&gt;0", null, null, null);

</p>

A melhor maneira de ler um contato bruto junto com todos os dados associados a ele é usando o Entity diretório. Se o contato bruto tiver linhas de dados, o cursor de entidade conterá uma linha para cada linha de dados. Se o contato bruto não tiver linhas de dados, o cursor ainda conterá uma linha com as informações brutas de nível de contato.

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><>read-only</td td><>Row ID. Os adaptadores de sincronização devem tentar preservar as IDs de linha durante as atualizações. Em outras palavras, é muito melhor para um adaptador de sincronização atualizar um contato bruto em vez de excluí-lo e reinseri-lo.</td/tr><tr><td>long</td td><><>/td td#CONTACT_ID<>read-only</td td><td>A ID da linha na tabela à < qual este contato bruto pertence.>ContactsContract.Contacts Contatos brutos são vinculados a contatos pelo processo de agregação, que pode ser controlado pelo #AGGREGATION_MODE campo e AggregationExceptions.</td/tr><tr><td>int</td td><><>/td td#AGGREGATION_MODE<>read/write</td td><>A mechanism that allows programmatic control of the aggregation process.<> Os valores permitidos são #AGGREGATION_MODE_DEFAULT, #AGGREGATION_MODE_DISABLED e #AGGREGATION_MODE_SUSPENDED. Consulte também AggregationExceptions.</td/tr><tr><td>int</td td><><>/td td#DELETED<>read/write</td td><td>The "deleted" flag: "0" by default, "1" if the row has been marked for deletion.<> Quando android.content.ContentResolver#delete é chamado em um contato bruto, ele é marcado para exclusão e removido de seu contato agregado. O adaptador de sincronização exclui o contato bruto no servidor e, em seguida, chama ContactResolver.delete mais uma vez, desta vez passando o parâmetro de ContactsContract#CALLER_IS_SYNCADAPTER consulta para finalizar a remoção de dados.</td/tr><tr><td>int</td td><><>/td td#STARRED<>read/write</td td><td>Um indicador para contatos favoritos: '1' se favorito, '0' caso contrário.<> Alterar esse campo imediatamente afeta o contato de agregação correspondente: se quaisquer contatos brutos nesse contato agregado forem estrelados, o contato em si será marcado como estrelado.</td/tr><tr><td>String</td td><><>/td td#CUSTOM_RINGTONE<>read/write</td td td><>Um toque personalizado associado a um contato bruto.<> Normalmente, esse é o URI retornado por uma atividade iniciada com a android.media.RingtoneManager#ACTION_RINGTONE_PICKER intenção. Para ter um efeito sobre o valor correspondente do contato de agregação, esse campo deve ser definido no momento em que o contato bruto é inserido. Para definir um toque personalizado em um contato, use o campo ContactsContract.Contacts#CUSTOM_RINGTONE Contacts.CUSTOM_RINGTONE em vez disso.</td></tr><tr><td>int</td></td td>#SEND_TO_VOICEMAIL<><> read/write</td td><td>Um indicador de se as chamadas desse contato bruto devem ser encaminhadas diretamente para a caixa postal ('1') ou não ('0'). Para ter um efeito sobre o valor correspondente do contato de agregação, esse campo deve ser definido no momento em que o contato bruto é inserido.</td/tr><tr><td>String</td td><><>/td td#ACCOUNT_NAME<>read/write-once</td td><>O nome da instância da conta à qual essa linha pertence, que quando emparelhada com < identifica uma conta específica.>#ACCOUNT_TYPE Por exemplo, esse será o endereço do Gmail se for uma conta do Google. Ele deve ser definido no momento em que o contato bruto é inserido e nunca alterado posteriormente.</td/tr><tr><td>String</td td><><>/td td#ACCOUNT_TYPE<>read/write-once</td><td td><>

O tipo de conta à qual essa linha pertence, que quando emparelhada com #ACCOUNT_NAME identifica uma conta específica. Ele deve ser definido no momento em que o contato bruto é inserido e nunca alterado posteriormente.

Para garantir a exclusividade, novos tipos de conta devem ser escolhidos de acordo com a convenção de nomenclatura do pacote Java. Portanto, uma conta do Google é do tipo "com.google".

</td/tr><tr><td>String</td td><><>/td td#DATA_SET<>read/write-once</td><td td><>

O conjunto de dados dentro da conta à qual essa linha pertence. Isso permite que vários adaptadores de sincronização para o mesmo tipo de conta distinguem entre os dados uns dos outros. A combinação de #ACCOUNT_TYPE, #ACCOUNT_NAMEe #DATA_SET identifica um conjunto de dados associado a um único adaptador de sincronização.

Isso está vazio por padrão e é completamente opcional. Ele só precisará ser preenchido se vários adaptadores de sincronização estiverem inserindo dados distintos para o mesmo tipo de conta e nome da conta.

Ele deve ser definido no momento em que o contato bruto é inserido e nunca alterado posteriormente.

</td/tr><tr><td>String</td td><><>/td td#SOURCE_ID<>read/write</td td><td>String que identifica exclusivamente essa linha para sua conta de origem.<> Normalmente, ele é definido no momento em que o contato bruto é inserido e nunca alterado posteriormente. A única exceção notável é um novo contato bruto: ele terá um nome e um tipo de conta (e possivelmente um conjunto de dados), mas nenhuma ID de origem. Isso indica ao adaptador de sincronização que um novo contato precisa ser criado no lado do servidor e sua ID armazenada no campo SOURCE_ID correspondente no telefone. </td/tr><tr><td>int</td td><><>/td td#VERSION<>read-only</td td><>Version number that is updated whenever this row or its related data changes.<> Esse campo pode ser usado para o bloqueio otimista de um contato bruto. </td/tr><tr><td>int</td td><><>/td td#DIRTY<>read/write</td td><>flag indicando que < foi alterado e essa linha precisa ser sincronizada por sua conta própria.>#VERSION O valor é definido como "1" automaticamente sempre que o contato bruto é alterado, a menos que o URI tenha o ContactsContract#CALLER_IS_SYNCADAPTER parâmetro de consulta especificado. O adaptador de sincronização sempre deve fornecer esse parâmetro de consulta para impedir a sincronização desnecessária: o usuário altera alguns dados no servidor, o adaptador de sincronização atualiza o contato no telefone (sem o sinalizador CALLER_IS_SYNCADAPTER), que define o sinalizador DIRTY, que dispara uma sincronização para trazer as alterações para o servidor. </td/tr><tr><td>String</td td><><>/td td#SYNC1<>read/write</td td td><>Coluna genérica fornecida para uso arbitrário por adaptadores de sincronização.<> O provedor de conteúdo armazena essas informações em nome do adaptador de sincronização, mas não as interpreta de forma alguma. </td/tr><tr><td>String</td td><><>/td td#SYNC2<>read/write</td td td><>Coluna genérica para uso por adaptadores de sincronização.<> </td/tr><tr><td>String</td td><><>/td td#SYNC3<>read/write</td td td><>Coluna genérica para uso por adaptadores de sincronização.<> </td/tr><tr><td>String</td td><><>/td td#SYNC4<>read/write</td td td><>Coluna genérica para uso por adaptadores de sincronização.<> </td></tr></table>

Java documentação para android.provider.ContactsContract.RawContacts.

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
ContentItemType

O tipo MIME dos resultados quando uma ID de contato bruto é acrescentada, #CONTENT_URIgerando um subdiretório de uma única pessoa.

ContentType

O tipo MIME dos resultados de #CONTENT_URI quando um valor de ID específico não é fornecido e vários contatos brutos podem ser retornados.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
ContentUri

O URI de estilo content:// para esta tabela, que solicita um diretório de linhas de contato brutas que correspondem 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 contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
JniPeerMembers

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

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 contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(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 contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
Equals(Object)

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
GetContactLookupUri(ContentResolver, Uri)

Crie um android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI estilo Uri para a entrada pai android.provider.ContactsContract.Contacts da entrada fornecida RawContacts .

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetLocalAccountName(Context)

O valor padrão usado para #ACCOUNT_NAME contatos brutos quando eles são inseridos sem um valor para esta coluna.

GetLocalAccountType(Context)

O valor padrão usado para #ACCOUNT_TYPE contatos brutos quando eles são inseridos sem um valor para esta coluna.

JavaFinalize()

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 contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(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 contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

(Herdado de JavaObject)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

Constantes para a tabela contatos brutos, que contém uma linha de informações de contato para cada pessoa em cada conta sincronizada.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a