Profil użytkownika
System Android obsługuje wyliczanie kontaktów z dostawcą ContactsContract od poziomu interfejsu API 5. Na przykład wyświetlanie listy kontaktów jest tak proste, jak użycie klasy ContactContracts.Contacts , jak pokazano w poniższym przykładzie kodu:
// 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());
}
}
Począwszy od systemu Android 4 (poziom 14 interfejsu API), klasa ContactsContact.Profile jest dostępna za pośrednictwem dostawcy ContactsContract
. Element ContactsContact.Profile
zapewnia dostęp do profilu osobistego właściciela urządzenia, w tym dane kontaktowe, takie jak imię i nazwisko właściciela urządzenia oraz numer telefonu.
Wymagane uprawnienia
Aby odczytywać i zapisywać dane kontaktowe, aplikacje muszą zażądać READ_CONTACTS
odpowiednio uprawnień i WRITE_CONTACTS
.
Ponadto, aby odczytywać i edytować profil użytkownika, aplikacje muszą zażądać READ_PROFILE
uprawnień i WRITE_PROFILE
.
Aktualizowanie danych profilu
Po ustawieniu tych uprawnień aplikacja może używać normalnych technik systemu Android do interakcji z danymi profilu użytkownika. Aby na przykład zaktualizować nazwę wyświetlaną profilu, wywołaj metodę Uri
ContentResolver.Update za pomocą właściwości ContactsContract.Profile.ContentRawContactsUri, jak pokazano poniżej:
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);
Odczytywanie danych profilu
Wysłanie zapytania do identyfikatora ContactsContact.Profile.ContentUri odczytuje dane profilu. Na przykład następujący kod odczytuje nazwę wyświetlaną profilu użytkownika:
// 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])));
}
}
Przechodzenie do profilu użytkownika
Na koniec, aby przejść do profilu użytkownika, utwórz intencję z akcją ActionView
, a ContactsContract.Profile.ContentUri
następnie przekaż ją do StartActivity
metody w następujący sposób:
var intent = new Intent (Intent.ActionView,
ContactsContract.Profile.ContentUri);
StartActivity (intent);
Podczas uruchamiania powyższego kodu profil użytkownika jest wyświetlany jak pokazano na poniższym zrzucie ekranu:
Praca z profilem użytkownika jest podobna do interakcji z innymi danymi w systemie Android i oferuje dodatkowy poziom personalizacji urządzeń.