Contactos
En este artículo se describe cómo puedes usar la interfaz IContacts de .NET Multi-platform App UI (.NET MAUI) para seleccionar un contacto y leer información sobre un contacto.
La implementación predeterminada de la interfaz IContacts
está disponible a través de la propiedad Default. Tanto la interfaz IContacts
como la clase Contacts
están contenidas en el espacio de nombres Microsoft.Maui.ApplicationModel.Communication
.
Importante
No se admite la selección de un contacto en Windows.
Debido a un conflicto de espacio de nombres, el tipo Contacts
debe estar completo al dirigirse a iOS o macOS: Microsoft.Maui.ApplicationModel.Communication.Contacts
. Los nuevos proyectos se dirigen automáticamente a estas plataformas, junto con Android y Windows.
Para escribir código que se compilará para iOS y macOS, completa el tipo Contacts
. Como alternativa, proporciona una directiva using
para asignar el espacio de nombres Communication
:
using Communication = Microsoft.Maui.ApplicationModel.Communication;
// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();
Introducción
Para acceder a la funcionalidad de Contactos, se requiere la siguiente configuración específica para la plataforma.
El permiso ReadContacts
es necesario y se debe configurar en el proyecto Android. Se puede agregar de las siguientes maneras:
Agrega el permiso basado en ensamblados:
Abre el archivo Platforms/Android/MainApplication.cs y agrega el siguiente atributo de ensamblado después
using
de las directivas:[assembly: UsesPermission(Android.Manifest.Permission.ReadContacts)]
O bien
Actualiza el manifiesto de Android:
Abre el archivo Platforms/Android/AndroidManifest.xml y agrega esto en el nodo
manifest
:<uses-permission android:name="android.permission.READ_CONTACTS" />
O bien
Actualiza el manifiesto de Android en el editor de manifiestos:
En Visual Studio, haz doble clic en el archivo Platforms/Android/AndroidManifest.xml para abrir el editor de manifiestos de Android. Después, en Permisos necesarios, comprueba el permiso READ_CONTACTS. Esto actualizará automáticamente el archivo AndroidManifest.xml.
Seleccionar un contacto
Puedes solicitar al usuario que elija un contacto llamando al método PickContactAsync(). Aparecerá un cuadro de diálogo de contacto en el dispositivo que permite al usuario seleccionar un contacto. Si el usuario no selecciona un contacto, se devuelve 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
}
}
Obtener todos los contactos
El método GetAllAsync devuelve una colección de contactos.
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;
}
Diferencias entre plataformas
En esta sección se describen las diferencias específicas de la plataforma con la API de contactos.
- El parámetro
cancellationToken
en el método GetAllAsync no está soportado.