Perfil de usuarioUser Profile

Android ha sido compatible con contactos de enumeración con el ContactsContract proveedor desde la API de nivel 5.Android has supported enumerating contacts with the ContactsContract provider since API Level 5. Por ejemplo, la lista de contactos es tan simple como utilizar el ContactContracts.Contacts clase tal como se muestra en el ejemplo de código siguiente:For example, listing contacts is as simple as using the ContactContracts.Contacts class as shown in the following code example:

// 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());
    }
}

Android 4 (nivel de API 14), a partir del ContactsContact.Profile clase está disponible a través de la ContactsContract proveedor.Beginning with Android 4 (API Level 14), the ContactsContact.Profile class is available through the ContactsContract provider. El ContactsContact.Profile proporciona acceso al perfil personal para el propietario de un dispositivo, lo que incluye datos de contacto, como del propietario del dispositivo nombre y número de teléfono.The ContactsContact.Profile provides access to the personal profile for the owner of a device, which includes contact data such as the device owner's name and phone number.

Permisos necesariosRequired Permissions

Para leer y escribir datos de contacto, las aplicaciones deben solicitar la READ_CONTACTS y WRITE_CONTACTS permisos, respectivamente.To read and write contact data, applications must request the READ_CONTACTS and WRITE_CONTACTS permissions, respectively. Además, para leer y editar el perfil de usuario, las aplicaciones deben solicitar la READ_PROFILE y WRITE_PROFILE permisos.Additionally, to read and edit the user profile, applications must request the READ_PROFILE and WRITE_PROFILE permissions.

Actualización de datos de perfilUpdating Profile Data

Una vez que se han establecido estos permisos, una aplicación puede usar técnicas de Android normales para interactuar con los datos del perfil de usuario.Once these permissions have been set, an application can use normal Android techniques to interact with the user profile's data. Por ejemplo, para actualizar el nombre para mostrar del perfil, llame a ContentResolver.Update con un Uri recuperar a través de la ContactsContract.Profile.ContentRawContactsUri propiedad, como se muestra a continuación:For example, to update the profile's display name, call ContentResolver.Update with a Uri retrieved through the ContactsContract.Profile.ContentRawContactsUri property, as shown below:

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 perfilReading Profile Data

Emitir una consulta a la ContactsContact.Profile.ContentUri lecturas hacer una copia de los datos de perfil.Issuing a query to the ContactsContact.Profile.ContentUri reads back the profile data. Por ejemplo, el siguiente código leerá el nombre para mostrar del perfil de usuario:For example, the following code will read the user profile's display name:

// 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 navegar hasta el perfil de usuario, cree una intención con un ActionView acción y un ContactsContract.Profile.ContentUri , a continuación, páselo a la StartActivity método similar al siguiente:Finally, to navigate to the user profile, create an Intent with an ActionView action and a ContactsContract.Profile.ContentUri then pass it to the StartActivity method like this:

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

Cuando se ejecuta el código anterior, se muestra el perfil de usuario, como se muestra en la captura de pantalla siguiente:When running the above code, the user profile is displayed as illustrated in the following screenshot:

Captura de pantalla del perfil de mostrar el perfil de usuario de Juan GarcíaScreenshot of profile displaying the John Doe user profile

Trabajar con el perfil de usuario es similar a la interacción con otros datos en Android, y ofrece un nivel adicional de personalización del dispositivo.Working with the user profile is similar to interacting with other data in Android, and it offers an additional level of device personalization.