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])));
}
}
Navegando até o perfil de usuário
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:
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.