Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Android поддерживает перечисление контактов с поставщиком ContactsContract с уровня 5 API. Например, перечисление контактов так же просто, как и в классе ContactContracts.Contacts , как показано в следующем примере кода:
// 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 (уровень API 14), класс ContactsContact.Profile доступен через ContactsContract поставщика. Предоставляет ContactsContact.Profile доступ к личному профилю владельца устройства, который включает контактные данные, такие как имя владельца устройства и номер телефона.
Необходимые разрешения
Для чтения и записи контактных данных приложения должны запрашивать READ_CONTACTS и WRITE_CONTACTS разрешения соответственно.
Кроме того, для чтения и изменения профиля пользователя приложения должны запрашивать READ_PROFILE и WRITE_PROFILE разрешения.
Обновление данных профиля
После установки этих разрешений приложение может использовать обычные методы Android для взаимодействия с данными профиля пользователя. Например, чтобы обновить отображаемое имя профиля, вызовите ContentResolver.Update с Uri помощью свойства ContactsContract.Profile.ContentRawContactsUri , как показано ниже:
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);
Чтение данных профиля
Выдача запроса в ContactsContact.Profile.ContentUri считывает данные профиля. Например, следующий код считывает отображаемое имя профиля пользователя:
// 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])));
}
}
Переход к профилею пользователя
Наконец, чтобы перейти к профилю пользователя, создайте намерение с ActionView действием и ContactsContract.Profile.ContentUri передайте его в StartActivity метод следующим образом:
var intent = new Intent (Intent.ActionView,
ContactsContract.Profile.ContentUri);
StartActivity (intent);
При выполнении приведенного выше кода профиль пользователя отображается, как показано на следующем снимке экрана:
Работа с профилем пользователя аналогична взаимодействию с другими данными в Android и обеспечивает дополнительный уровень персонализации устройств.
