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])));
}
}
Navigation vers le profil utilisateur
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 :
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.