Partager via


Profil utilisateur

Android a pris en charge l’énumération des contacts avec le fournisseur ContactsContract depuis le niveau d’API 5. Par exemple, la liste des contacts est aussi simple que l’utilisation de la classe ContactContracts.Contacts , comme illustré dans l’exemple de code suivant :

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

À compter d’Android 4 (niveau d’API 14), la classe ContactsContact.Profile est disponible via le ContactsContract fournisseur. Il ContactsContact.Profile fournit l’accès au profil personnel pour le propriétaire d’un appareil, qui inclut des données de contact telles que le nom et le numéro de téléphone du propriétaire de l’appareil.

Autorisations requises

Pour lire et écrire des données de contact, les applications doivent demander respectivement les autorisations et WRITE_CONTACTS les READ_CONTACTS autorisations. En outre, pour lire et modifier le profil utilisateur, les applications doivent demander les autorisations et WRITE_PROFILE les READ_PROFILE autorisations.

Mise à jour des données de profil

Une fois ces autorisations définies, une application peut utiliser des techniques Android normales pour interagir avec les données du profil utilisateur. Par exemple, pour mettre à jour le nom d’affichage du profil, appelez ContentResolver.Update avec une Uri récupération via la propriété ContactsContract.Profile.ContentRawContactsUri , comme indiqué ci-dessous :

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

Lecture des données de profil

L’émission d’une requête à ContactsContact.Profile.ContentUri lit les données de profil. Par exemple, le code suivant lit le nom complet du profil utilisateur :

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

Enfin, pour accéder au profil utilisateur, créez une intention avec une ActionView action, ContactsContract.Profile.ContentUri puis passez-la à la StartActivity méthode comme suit :

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

Lorsque vous exécutez le code ci-dessus, le profil utilisateur s’affiche comme illustré dans la capture d’écran suivante :

Capture d’écran du profil affichant le profil utilisateur John Doe

L’utilisation du profil utilisateur est similaire à l’interaction avec d’autres données dans Android et offre un niveau supplémentaire de personnalisation des appareils.