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

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:

Screenshot des Profils mit dem John Doe-Benutzerprofil

Das Arbeiten mit dem Benutzerprofil ähnelt der Interaktion mit anderen Daten in Android und bietet eine zusätzliche Stufe der Gerätepersonalisierung.