Udostępnij za pośrednictwem


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

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:

Zrzut ekranu przedstawiający profil użytkownika John Doe

Praca z profilem użytkownika jest podobna do interakcji z innymi danymi w systemie Android i oferuje dodatkowy poziom personalizacji urządzeń.