Perfil do Usuário

O Android tem suporte para enumerar contatos com o provedor ContactsContract desde o Nível 5 da API. Por exemplo, listar contatos é tão simples quanto usar a classe ContactContracts.Contacts , conforme mostrado no exemplo de código a seguir:

// Get the URI for the user's contacts:
var uri = ContactsContract.Contacts.ContentUri;

// Setup the "projection" (columns we want) for only the ID and display name:
string[] projection = {
    ContactsContract.Contacts.InterfaceConsts.Id,
    ContactsContract.Contacts.InterfaceConsts.DisplayName };

// Use a CursorLoader to retrieve the user's contacts data:
CursorLoader loader = new CursorLoader(this, uri, projection, null, null, null);
ICursor cursor = (ICursor)loader.LoadInBackground();

// Print the contact data to the console if reading back succeeds:
if (cursor != null)
{
    if (cursor.MoveToFirst())
    {
        do
        {
            Console.WriteLine("Contact ID: {0}, Contact Name: {1}",
                               cursor.GetString(cursor.GetColumnIndex(projection[0])),
                               cursor.GetString(cursor.GetColumnIndex(projection[1])));
        } while (cursor.MoveToNext());
    }
}

A partir do Android 4 (Nível de API 14), a classe ContactsContact.Profile está disponível por meio do ContactsContract provedor. O ContactsContact.Profile fornece acesso ao perfil pessoal para o proprietário de um dispositivo, que inclui dados de contato, como o nome e o número de telefone do proprietário do dispositivo.

Permissões necessárias

Para ler e gravar dados de contato, os aplicativos devem solicitar as READ_CONTACTS permissões e WRITE_CONTACTS , respectivamente. Além disso, para ler e editar o perfil do usuário, os aplicativos devem solicitar as READ_PROFILE permissões e WRITE_PROFILE .

Atualizando dados de perfil

Depois que essas permissões tiverem sido definidas, um aplicativo poderá usar técnicas normais do Android para interagir com os dados do perfil do usuário. Por exemplo, para atualizar o nome de exibição do perfil, chame ContentResolver.Update com um Uri recuperado por meio da propriedade ContactsContract.Profile.ContentRawContactsUri , conforme mostrado abaixo:

var values = new ContentValues ();
values.Put (ContactsContract.Contacts.InterfaceConsts.DisplayName, "John Doe");

// Update the user profile with the name "John Doe":
ContentResolver.Update (ContactsContract.Profile.ContentRawContactsUri, values, null, null);

Lendo dados de perfil

A emissão de uma consulta para o ContactsContact.Profile.ContentUri lê os dados do perfil. Por exemplo, o código a seguir lerá o nome de exibição do perfil de usuário:

// Read the profile
var uri = ContactsContract.Profile.ContentUri;

// Setup the "projection" (column we want) for only the display name:
string[] projection = {
    ContactsContract.Contacts.InterfaceConsts.DisplayName };

// Use a CursorLoader to retrieve the data:
CursorLoader loader = new CursorLoader(this, uri, projection, null, null, null);
ICursor cursor = (ICursor)loader.LoadInBackground();
if (cursor != null)
{
    if (cursor.MoveToFirst ())
    {
        Console.WriteLine(cursor.GetString (cursor.GetColumnIndex (projection [0])));
    }
}

Por fim, para navegar até o perfil do usuário, crie uma Intenção com uma ActionView ação e, ContactsContract.Profile.ContentUri em seguida, passe-a para o StartActivity método como este:

var intent = new Intent (Intent.ActionView,
    ContactsContract.Profile.ContentUri);
StartActivity (intent);

Ao executar o código acima, o perfil do usuário é exibido conforme ilustrado na captura de tela a seguir:

Captura de tela do perfil exibindo o perfil de usuário do John Doe

Trabalhar com o perfil do usuário é semelhante a interagir com outros dados no Android e oferece um nível adicional de personalização do dispositivo.