Condividi tramite


Contatti

Sfogliare l'esempio. Esplorare l'esempio

Questo articolo descrive come usare l'interfaccia dell'interfaccia dell'app multipiattaforma .NET (.NET MAUI) IContacts per selezionare un contatto e leggerne le informazioni.

L'implementazione predefinita dell'interfaccia IContacts è disponibile tramite la Default proprietà . Sia l'interfaccia che Contacts la IContacts classe sono contenute nello spazio dei Microsoft.Maui.ApplicationModel.Communication nomi .

Importante

La selezione di un contatto non è supportata in Windows.

A causa di un conflitto dello spazio dei nomi, il Contacts tipo deve essere completo quando è destinato a iOS o macOS: Microsoft.Maui.ApplicationModel.Communication.Contacts. I nuovi progetti sono destinati automaticamente a queste piattaforme, insieme ad Android e Windows.

Per scrivere codice che verrà compilato per iOS e macOS, qualificare completamente il Contacts tipo. In alternativa, fornire una using direttiva per eseguire il mapping dello spazio dei Communication nomi:

using Communication = Microsoft.Maui.ApplicationModel.Communication;

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

Operazioni preliminari

Per accedere alla funzionalità Contatti è necessaria la configurazione specifica della piattaforma seguente.

L'autorizzazione ReadContacts è obbligatoria e deve essere configurata nel progetto Android. È possibile aggiungerla nei modi seguenti:

  • Aggiungere l'autorizzazione basata su assembly:

    Aprire il file Platforms/Android/MainApplication.cs e aggiungere l'attributo assembly seguente dopo using le direttive:

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

    o

  • Aggiornare il manifesto Android:

    Aprire il file Platforms/Android/AndroidManifest.xml e aggiungere quanto segue nel manifest nodo:

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

    o

  • Aggiornare il manifesto Android nell'editor del manifesto:

    In Visual Studio fare doppio clic sul file Platforms/Android/AndroidManifest.xml per aprire l'editor del manifesto Android. Quindi, in Autorizzazioni necessarie controllare l'autorizzazione READ_CONTACTS . Il file AndroidManifest.xml verrà aggiornato automaticamente.

Selezionare un contatto

È possibile richiedere all'utente di selezionare un contatto chiamando il PickContactAsync() metodo . Nel dispositivo verrà visualizzata una finestra di dialogo di contatto che consente all'utente di selezionare un contatto. Se l'utente non seleziona un contatto, null viene restituito.

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

Ottenere tutti i contatti

Il GetAllAsync metodo restituisce una raccolta di contatti.

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

Differenze tra le piattaforme

Questa sezione descrive le differenze specifiche della piattaforma con l'API contatti.

  • Il cancellationToken parametro nel GetAllAsync metodo non è supportato.