Share via


Perfil de usuario

Android ha admitido la enumeración de contactos con el proveedor ContactsContract desde el nivel de API 5. Por ejemplo, enumerar contactos es tan sencillo como usar la clase ContactContracts.Contacts como se muestra en el ejemplo de código siguiente:

// 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 de Android 4 (nivel de API 14), la clase ContactsContact.Profile está disponible a través del proveedorContactsContract. ContactsContact.Profile proporciona acceso al perfil personal para el propietario de un dispositivo, que incluye datos de contacto, como el nombre del propietario de dispositivo y el número de teléfono.

Permisos necesarios

Para leer y escribir datos de contacto, las aplicaciones deben solicitar los permisos READ_CONTACTS y WRITE_CONTACTS, respectivamente. Además, para leer y editar el perfil de usuario, las aplicaciones deben solicitar los permisos READ_PROFILE y WRITE_PROFILE.

Actualización de datos de perfil

Una vez establecidos estos permisos, una aplicación puede usar técnicas normales de Android para interactuar con los datos del perfil de usuario. Por ejemplo, para actualizar el nombre para mostrar del perfil, llame a ContentResolver.Update con un elemento recuperado Uri a través de la propiedad ContactsContract.Profile.ContentRawContactsUri, como se muestra a continuación:

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);

Leer datos de perfil

Al emitir una consulta a ContactsContact.Profile.ContentUri, se devuelven los datos del perfil. Por ejemplo, el código siguiente leerá el nombre para mostrar del perfil de usuario:

// 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 último, para ir al perfil de usuario, cree una intención con una acción ActionView y un ContactsContract.Profile.ContentUri, a continuación, pásela al método StartActivity de la siguiente manera:

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

Al ejecutar el código anterior, el perfil de usuario se muestra como se muestra en la captura de pantalla siguiente:

Captura de pantalla del perfil que muestra el perfil de usuario de John Doe

Trabajar con el perfil de usuario es similar a interactuar con otros datos en Android y ofrece un nivel adicional de personalización de dispositivos.