Profil uživatele

Android podporuje výčet kontaktů u poskytovatele ContactsContract od rozhraní API úrovně 5. Výpis kontaktů je například jednoduchý jako použití Třídy ContactContracts.Contacts , jak je znázorněno v následujícím příkladu kódu:

// 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());
    }
}

Počínaje Androidem 4 (rozhraní API úrovně 14) je třída ContactsContact.Profile dostupná prostřednictvím ContactsContract zprostředkovatele. Poskytuje ContactsContact.Profile přístup k osobnímu profilu vlastníka zařízení, který zahrnuje kontaktní údaje, jako je jméno vlastníka zařízení a telefonní číslo.

Požadovaná oprávnění

Aby bylo potřeba číst a zapisovat kontaktní data, musí aplikace požádat READ_CONTACTS o příslušná oprávnění a WRITE_CONTACTS oprávnění. Kromě toho musí aplikace požadovat READ_PROFILE oprávnění a WRITE_PROFILE číst a upravovat profil uživatele.

Aktualizace dat profilu

Po nastavení těchto oprávnění může aplikace používat běžné techniky Androidu k interakci s daty profilu uživatele. Pokud například chcete aktualizovat zobrazovaný název profilu, zavolejte ContentResolver.Update s načtenou Uri vlastností ContactsContract.Profile.ContentRawContactsUri , jak je znázorněno níže:

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

Čtení dat profilu

Vydání dotazu pro ContactsContact.Profile.ContentUri přečte zpět data profilu. Například následující kód přečte zobrazované jméno profilu uživatele:

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

Nakonec přejděte do profilu uživatele, vytvořte záměr s ActionView akcí a ContactsContract.Profile.ContentUri pak ho StartActivity předejte metodě takto:

var intent = new Intent (Intent.ActionView,
    ContactsContract.Profile.ContentUri);
StartActivity (intent);

Při spuštění výše uvedeného kódu se profil uživatele zobrazí, jak je znázorněno na následujícím snímku obrazovky:

Screenshot of profile displaying the John Doe user profile

Práce s profilem uživatele je podobná interakci s jinými daty v Androidu a nabízí další úroveň přizpůsobení zařízení.