Compartir vía


Contactos

Examinar ejemplo. Examinar el ejemplo

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.