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