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-Eigenschaft auf, 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])));
}
}
Navigieren zum Benutzerprofil
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:
Das Arbeiten mit dem Benutzerprofil ähnelt der Interaktion mit anderen Daten in Android und bietet eine zusätzliche Stufe der Gerätepersonalisierung.