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. Der ContactsContact.Profile Zugriff auf das persönliche Profil für den Besitzer eines Geräts, einschließlich Kontaktdaten wie name und Telefonnummer des Gerätebesitzers.

Erforderliche Berechtigungen

Um Kontaktdaten zu lesen und zu schreiben, müssen Anwendungen die READ_CONTACTS bzw WRITE_CONTACTS . berechtigungen anfordern. Darüber hinaus müssen Anwendungen zum Lesen und Bearbeiten des Benutzerprofils die und WRITE_PROFILE die READ_PROFILE Berechtigungen anfordern.

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 einer Uri abgerufenen ContactsContract.Profile.ContentRawContactsUri-Eigenschaftauf, wie unten dargestellt:

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

Das Ausgeben einer Abfrage an " ContactsContact.Profile.ContentUri " liest die Profildaten zurück. 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 zum Benutzerprofil zu navigieren, erstellen Sie eine Absicht mit einer ActionView Aktion, und ContactsContract.Profile.ContentUri übergeben Sie sie dann an die StartActivity Methode wie folgt:

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.