Contatos

Browse sample. Navegue pelo exemplo

Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI) IContacts para selecionar um contato e ler informações sobre ele.

A implementação padrão da interface está disponível por meio da IContactsDefault propriedade. A interface e Contacts a IContacts classe estão contidas no Microsoft.Maui.ApplicationModel.Communication namespace.

Importante

Não há suporte para a seleção de um contato no Windows.

Devido a um conflito de namespace, o Contacts tipo deve ser totalmente qualificado ao segmentar iOS ou macOS: Microsoft.Maui.ApplicationModel.Communication.Contacts. Novos projetos visam automaticamente essas plataformas, juntamente com Android e Windows.

Para escrever o código que será compilado para iOS e macOS, qualifique totalmente o Contacts tipo. Como alternativa, forneça uma using diretiva para mapear o Communication namespace:

using Communication = Microsoft.Maui.ApplicationModel.Communication;

// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();

Introdução

Para acessar a funcionalidade Contatos, é necessária a seguinte configuração específica da plataforma.

A permissão ReadContacts é necessária e deve ser configurada no projeto do Android. Isso pode ser usado das seguintes maneiras:

  • Adicione a permissão baseada em assembly:

    Abra o arquivo Platforms/Android/MainApplication.cs e adicione o seguinte atributo assembly após using as diretivas:

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

    - ou -

  • Atualize o manifesto do Android:

    Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione o manifest seguinte no nó:

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

    - ou -

  • Atualize o manifesto do Android no editor de manifesto:

    No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão READ_CONTACTS . Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Escolha um contato

Você pode solicitar que o usuário escolha um contato chamando o PickContactAsync() método. Uma caixa de diálogo de contato aparecerá no dispositivo, permitindo que o usuário selecione um contato. Se o usuário não selecionar um contato, null será retornado.

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
    }
}

Obter todos os contatos

O GetAllAsync método retorna uma coleção de contatos.

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

Diferenças de plataforma

Esta seção descreve as diferenças específicas da plataforma com a API de contatos.

  • O cancellationToken parâmetro no GetAllAsync método não é suportado.