Контакты
В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI) IContacts для выбора контакта и чтения сведений об этом.
Реализация интерфейса по умолчанию IContacts
доступна через Default свойство. Интерфейс IContacts
и Contacts
класс содержатся в Microsoft.Maui.ApplicationModel.Communication
пространстве имен.
Важно!
Выбор контакта не поддерживается в Windows.
Из-за конфликта Contacts
пространства имен тип должен быть полностью квалифицирован при выборе iOS или macOS: Microsoft.Maui.ApplicationModel.Communication.Contacts
Новые проекты автоматически нацелены на эти платформы вместе с Android и Windows.
Чтобы написать код, который будет компилироваться для iOS и macOS, полностью квалифицируйте Contacts
тип. Кроме того, предоставьте директиву using
для сопоставления Communication
пространства имен:
using Communication = Microsoft.Maui.ApplicationModel.Communication;
// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();
Начать
Для доступа к функциям контактов требуется следующая настройка для конкретной платформы.
Требуется разрешение ReadContacts
, которое следует настроить в проекте Android. Для этого можно применить любой из следующих методов:
Добавьте разрешение на основе сборки:
Откройте файл Platform/Android/MainApplication.cs и добавьте следующий атрибут сборки после
using
директив:[assembly: UsesPermission(Android.Manifest.Permission.ReadContacts)]
- или -
Обновите манифест Android:
Откройте файл Platform/Android/AndroidManifest.xml и добавьте в узел следующее
manifest
:<uses-permission android:name="android.permission.READ_CONTACTS" />
- или -
Обновите манифест Android в редакторе манифеста:
В Visual Studio дважды щелкните файл Platform/Android/AndroidManifest.xml , чтобы открыть редактор манифеста Android. Затем в разделе "Необходимые разрешения" проверка разрешения READ_CONTACTS. Это действие автоматически обновляет файл AndroidManifest.xml.
Выбор контакта
Пользователь может запросить контакт, вызвав PickContactAsync() метод. На устройстве появится диалоговое окно контакта, позволяющее пользователю выбрать контакт. Если пользователь не выбирает контакт, null
возвращается.
private async void SelectContactButton_Clicked(object sender, EventArgs e)
{
try
{
var contact = await Contacts.Default.PickContactAsync();
if (contact == null)
return;
string id = contact.Id;
string namePrefix = contact.NamePrefix;
string givenName = contact.GivenName;
string middleName = contact.MiddleName;
string familyName = contact.FamilyName;
string nameSuffix = contact.NameSuffix;
string displayName = contact.DisplayName;
List<ContactPhone> phones = contact.Phones; // List of phone numbers
List<ContactEmail> emails = contact.Emails; // List of email addresses
}
catch (Exception ex)
{
// Most likely permission denied
}
}
Получения списка всех контактов
Метод GetAllAsync возвращает коллекцию контактов.
public async IAsyncEnumerable<string> GetContactNames()
{
var contacts = await Contacts.Default.GetAllAsync();
// No contacts
if (contacts == null)
yield break;
foreach (var contact in contacts)
yield return contact.DisplayName;
}
Различия между платформами
В этом разделе описаны различия платформы с API контактов.
- Параметр
cancellationToken
в методе GetAllAsync не поддерживается.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по