다음을 통해 공유


연락처

샘플을 찾아봅니다. 샘플 찾아보기

이 문서에서는 .NET 다중 플랫폼 앱 UI(.NET MAUI) IContacts 인터페이스를 사용하여 연락처를 선택하고 이에 대한 정보를 읽는 방법을 설명합니다.

인터페이스의 IContacts 기본 구현은 속성을 통해 Default 사용할 수 있습니다. IContacts 인터페이스와 Contacts 클래스는 모두 네임스페이스에 Microsoft.Maui.ApplicationModel.Communication 포함됩니다.

Important

연락처 선택은 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 프로젝트에서 구성해야 합니다. 이 권한은 다음과 같은 방법으로 추가할 수 있습니다.

  • 어셈블리 기반 권한을 추가합니다.

    Platforms/Android/MainApplication.cs 파일을 열고 지시문 다음에 using 다음 어셈블리 특성을 추가합니다.

    [assembly: UsesPermission(Android.Manifest.Permission.ReadContacts)]
    

    - 또는 -

  • Android 매니페스트를 업데이트합니다.

    Platforms/Android/AndroidManifest.xml 파일을 열고 노드에 다음을 manifest 추가합니다.

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    

    - 또는 -

  • 매니페스트 편집기에서 Android 매니페스트를 업데이트합니다.

    Visual Studio에서 플랫폼/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와의 플랫폼별 차이점에 대해 설명합니다.

  • 메서드의 GetAllAsync 매개 변수는 cancellationToken 지원되지 않습니다.