Aracılığıyla paylaş


Kullanıcı Profili

Android, API Düzeyi 5'ten bu yana ContactsContract sağlayıcısıyla kişileri listelemeyi desteklemiştir. Örneğin, kişileri listelemek, aşağıdaki kod örneğinde gösterildiği gibi ContactContracts.Contacts sınıfını kullanmak kadar basittir:

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

Android 4'le (API Düzeyi 14) başlayarak ContactsContact.Profile sınıfı sağlayıcı aracılığıyla ContactsContract kullanılabilir. , ContactsContact.Profile cihaz sahibinin adı ve telefon numarası gibi kişi verilerini içeren bir cihazın sahibi için kişisel profile erişim sağlar.

Gerekli İzinler

Kişi verilerini okumak ve yazmak için uygulamaların sırasıyla ve WRITE_CONTACTS izinlerini istemesi READ_CONTACTS gerekir. Ayrıca, kullanıcı profilini okumak ve düzenlemek için uygulamaların ve WRITE_PROFILE izinlerini istemesi READ_PROFILE gerekir.

Profil Verilerini Güncelleştirme

Bu izinler ayarlandıktan sonra, bir uygulama kullanıcı profilinin verileriyle etkileşim kurmak için normal Android tekniklerini kullanabilir. Örneğin, profilin görünen adını güncelleştirmek için ContentResolver.Update'i aşağıda gösterildiği gibi ContactsContract.Profile.ContentRawContactsUri özelliği aracılığıyla alınan ile Uri çağırın:

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

Profil Verilerini Okuma

ContactsContact.Profile.ContentUri'ye bir sorgu verildiğinde profil verileri okunur. Örneğin, aşağıdaki kod kullanıcı profilinin görünen adını okur:

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

Son olarak, kullanıcı profiline gitmek için bir eylem içeren bir ActionView Intent oluşturun ve ContactsContract.Profile.ContentUri bunu aşağıdaki gibi bir yönteme StartActivity geçirin:

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

Yukarıdaki kodu çalıştırırken, kullanıcı profili aşağıdaki ekran görüntüsünde gösterildiği gibi görüntülenir:

John Doe kullanıcı profilini görüntüleyen profilin ekran görüntüsü

Kullanıcı profiliyle çalışmak, Android'deki diğer verilerle etkileşime benzer ve ek bir cihaz kişiselleştirme düzeyi sunar.