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