Benutzerprofil
Android unterstützt das Aufzählen von Kontakten mit dem ContactsContract-Anbieter seit API-Ebene 5. Beispielsweise ist das Auflisten von Kontakten so einfach wie die Verwendung der ContactContracts.Contacts-Klasse , wie im folgenden Codebeispiel gezeigt:
// 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());
}
}
Ab Android 4 (API-Ebene 14) ist die ContactsContact.Profile-Klasse über den ContactsContract
Anbieter verfügbar. Bietet ContactsContact.Profile
Zugriff auf das persönliche Profil für den Besitzer eines Geräts, das Kontaktdaten wie den Namen und die Telefonnummer des Gerätebesitzers enthält.
Erforderliche Berechtigungen
Zum Lesen und Schreiben von Kontaktdaten müssen Anwendungen die READ_CONTACTS
Berechtigungen und WRITE_CONTACTS
anfordern.
Darüber hinaus müssen Anwendungen die Berechtigungen und anfordern READ_PROFILE
, um das Benutzerprofil zu lesen und WRITE_PROFILE
zu bearbeiten.
Aktualisieren von Profildaten
Nachdem diese Berechtigungen festgelegt wurden, kann eine Anwendung normale Android-Techniken verwenden, um mit den Daten des Benutzerprofils zu interagieren. Um beispielsweise den Anzeigenamen des Profils zu aktualisieren, rufen Sie ContentResolver.Update mit einem Uri
auf, der über die ContactsContract.Profile.ContentRawContactsUri-Eigenschaft abgerufen wird, wie unten gezeigt:
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);
Lesen von Profildaten
Wenn Sie eine Abfrage für ContactsContact.Profile.ContentUri ausführen, werden die Profildaten zurückgelesen. Der folgende Code liest beispielsweise den Anzeigenamen des Benutzerprofils:
// 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])));
}
}
Navigieren zum Benutzerprofil
Um schließlich zum Benutzerprofil zu navigieren, erstellen Sie eine Absicht mit einer ActionView
Aktion, und ContactsContract.Profile.ContentUri
übergeben Sie sie dann wie folgt an die StartActivity
-Methode:
var intent = new Intent (Intent.ActionView,
ContactsContract.Profile.ContentUri);
StartActivity (intent);
Beim Ausführen des obigen Codes wird das Benutzerprofil wie im folgenden Screenshot dargestellt angezeigt:
Das Arbeiten mit dem Benutzerprofil ähnelt der Interaktion mit anderen Daten in Android und bietet eine zusätzliche Stufe der Gerätepersonalisierung.