Perfil do Usuário

O Android oferece suporte à enumeração de 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 (API Nível 14), a classe ContactsContact.Profile está disponível por meio do ContactsContract provedor. O ContactsContact.Profile fornece acesso ao perfil pessoal do 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 de usuário, os aplicativos devem solicitar as READ_PROFILE permissões e WRITE_PROFILE .

Atualizando dados de perfil

Depois que essas permissões forem 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

Emitir uma consulta para o ContactsContact.Profile.ContentUri lê de volta 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])));
    }
}

Finalmente, 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 de usuário é exibido conforme ilustrado na captura de tela a seguir:

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

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