C# .Net 7 la gestione dei contatti con MAUI per Android

Articolo che fornisce le basi per la gestione dei contatti tramite MAUI con C# e .Net 7.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come realizzare con il Framework MAUI versione 7 una semplice applicazione per la gestione dei contatti da utilizzare nel sistema operativo Android, quindi su Smartphone, oppure altri sistemi operativi quali Windows e Mac.
Con il framework MAUI e l’utilizzo di Visual Studio 2022 è possibile creare applicazioni multipiattaforma, permettendo in questo modo di creare applicazioni per più sistemi operativi.

Creazione del progetto

Si crea un nuovo progetto con Visual Studio 2022 community o versione successiva, utilizzando come modello applicazione MAUI, e selezionando come versione del Framework 7.
Dopo aver impostato il nome e creato il progetto, occorre definire per lo sviluppo Android le autorizzazioni nella lettura dei contatti.
Per i contatti, utilizzando l’emulatore si consiglia di crearne uno, altrimenti non saranno presenti dati, mentre nel caso di deploy su Smartphone assicurarsi che sono presenti.
Per autorizzazione la lettura dei contatti in ambito Android, occorre cliccare nel file “AndroidManifest.xml” situato nella cartella “Android” della cartella superiore “Platforms” ed aggiungere il tag per la lettura dei contatti.
Si riporta di seguito il tag per la lettura dei contatti.

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

Il codice che andremo a scrivere si troverà all’evento click di un pulsante, che troviamo durante la creazione del progetto oppure che aggiungeremo nell’eventualità che non è presente un controllo di tipo pulsante.

Stesura del codice

Terminata la parte della personalizzazione, occorre scrivere il codice nel linguaggio di programmazione C#, per gestire i contatti.
In questo caso occorre utilizzare lo spazio dei nomi “Microsoft.Maui.ApplicationModel.Communication;” visto che tra le varie piattaforme c’è un conflitto con la classe “Contacts” occorre creare un “alias” onde evitare di scrivere tutto il namespace durante la stesura di codice.
In alto, sopra ad ogni dichiarazione inseriamo lo spazio dei nomi per l’utilizzo delle classi dei contatti con un alias, in modo da utilizzarlo per più piattaforme.
Di seguito il frammento di codice nel linguaggio C# delle suddette operazioni.

C#
using Contatti = Microsoft.Maui.ApplicationModel.Communication;

Nell’evento click del pulsante, scriviamo il codice che apre la finestra dei contatti, ed una volta selezionato il contatto, ne rileva le informazioni, come il nome, email, telefono ed altre informazioni del contatto, il tutto come mostrato in figura 1.

Figura 1 – La finestra dei contatti che viene aperta.

Figura 1 – La finestra dei contatti che viene aperta.

Per aprire la finestra dei contatti utilizziamo il metodo “PickContactAsync” che restituisce un oggetto di tipo contatto qualora venga selezionato uno oppure null, nel caso che non viene selezionato nulla.
Di seguito si riporta il frammento di codice delle suddette operazioni.

C#
    var contattoSelezionato = await Contatti.Contacts.Default.PickContactAsync();
           if (contattoSelezionato == null)
               return;
           string idContatto = contattoSelezionato.Id;
           string Nome = contattoSelezionato.GivenName;
           string Cognome = contattoSelezionato.FamilyName;
           string NomeVisualizzato = contattoSelezionato.DisplayName;
           List<ContactPhone> Telefoni = contattoSelezionato.Phones;  
           List<ContactEmail> Email = contattoSelezionato.Emails;

Nel caso che invece viene generato un’eccezione dovuto alle autorizzazioni o privilegi per l’accesso ai contatti, occorre inserire sempre nel file “AndroidManifest.xml” il tag per la versione del SDK, il tutto come mostrato qui di seguito.

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="9"/>

Qualora vogliamo leggere tutti i contatti, ed a differenza del precedente esempio, utilizzarlo anche per le app in sistemi operativi Windows, possiamo utilizzare il metodo “GetAllAsync” per estrapolare tutti i contatti che sono memorizzati.
Si crea una funziona che verrà richiamata dall’evento click del pulsante, che legge tutti i contatti, e li memorizza in un oggetto di tipo lista di string, contenente il nome da visualizzare e telefono.

C#
public  IEnumerable<string> GetContatti()
   {
       List<string> risultato = new List<string>();
       var contattiTrovati = Contatti.Contacts.Default.GetAllAsync();
       if (contattiTrovati == null)
           return risultato;
       var risultatoContatti = contattiTrovati.Result;
       foreach (var contact in risultatoContatti)
       {
           Descrizione.Text += contact.DisplayName;
           risultato.Add("Nome:" + contact.DisplayName + " Telefono: " + string.Join(",", contact.Phones.ToList()));
       }
       return risultato;
  }

Il metodo verrà chiamato dall’evento click del pulsante, di seguito il frammento di codice delle suddette operazioni.

C#
var risultato = GetContatti();

Conclusioni

L’articolo ha voluto fornire al lettore una chiara e semplice introduzione alla programmazione MAUI sulla gestione dei contatti su diverse piattaforme.
Con il nuovo Framework MAUI, ed in particolare al rilascio della versione 7 di .Net, il programmatore non avrà difficoltà nello scrivere codice per multipiattaforma per diversi ambiti nella gestione dei contatti.
Le numerosi classi messe a disposizione da questo Framework, e qualche accorgimento per l’utilizzo nei vari sistemi operativi, permetterà di scrivere applicazioni scalabili, in maniera semplice e rapida.