Contatos

Procurar amostra. Procurar no exemplo

Este artigo descreve como 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 IContacts está disponível por meio da propriedade Default. A interface IContacts e a classe Contacts estão contidas no namespace Microsoft.Maui.ApplicationModel.Communication.

Importante

A seleção de um contato não conta com suporte no Windows.

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

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

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 de montagem após as diretivas using:

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

    - ou -

  • Atualize o manifesto do Android:

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

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

Escolher um contato

Você pode solicitar que o usuário escolha um contato chamando o método PickContactAsync(). Uma caixa de diálogo de contato será exibida 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 método GetAllAsync 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.

  • Não há suporte para o parâmetro cancellationToken no método GetAllAsync.