Поделиться через


Контакты

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .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 не поддерживается.