Interagire con i dati dell utente: Contatti e Appuntamenti Alessandro Bagnoli Email: alessandro.bagnoli4@studio.unibo.it Matricola: 651803 Programmazione di Sistemi Mobile a.a. 2014/2015 Università di Bologna, C.d.L. in Ingegneria e Scienze Informatiche
Introduzione In questa tesina verranno trattati i seguenti argomenti: Accesso ai contatti attraverso l API Windows.ApplicationModel.Contacts Selezionare contatti attraverso interfacce grafiche intermediarie Accesso alle entità di classe ContactStore e Contact Messaggistica Inviare SMS Inviare email con allegati Accesso al calendario attraverso l API Windows.ApplicationModel.Appointments Selezionare appuntamenti attraverso interfacce grafiche intermediarie Creare, visualizzare e aggiornare appuntamenti del calendario Un applicazione Windows Phone può leggere le informazioni dalle liste di contatti e calendari derivate da diversi account: - Account Microsoft (Outlook.com, Xbox, Skype, OneDrive, ecc ) - Exchance (Outlook) - Google - icloud - Facebook - Altri account (Twitter, LinkedIn, ecc ) 1
API Intermediarie vs. API ad Accesso Diretto Intermediarie: Su Windows Phone equivale, ad esempio, al ContactPicker. L API ContactPicker mostra l interfaccia di sistema per l accesso ai contatti. In questo modo l applicazione non ha bisogno dei permessi nel manifest per accedere ai contatti, poiché sfrutta un altra applicazione già installata sul dispositivo che si occupa della gestione dei contatti. Accesso diretto: L applicazione ha accesso diretto ai contatti salvati sul dispositivo, e dispone della propria interfaccia grafica. In questo modo l applicazione deve dichiarare i permessi nel manifest per accedere ai contatti. 2
API per i contatti in Windows Phone 8.1 Riassumendo abbiamo quindi: API Intermediarie Windows.ApplicationModel.Contacts: ContactPicker Mostra l interfaccia intermediaria (ad esempio l applicazione di default per la rubrica) per selezionare i contatti. Non richiede permessi nel manifest. API ad Accesso Diretto Windows.ApplicationModel.Contacts: ContactManager.RequestStoreAsync Recupera un oggetto ContactStore che abilita la ricerca dei contatti. Richiede permessi nel manifest. ContactStore.FindContactAsync Cerca i contatti nella memoria del dispositivo Contact Rappresenta un contatto (ritornato dal metodo FindContactAsync) Come usare il Contact Picker Selezione di un singolo contatto: Selezione di più contatti alla volta: 3
Come usare il Contact Manager Cercare i contatti: Come si può notare dal codice sopra riportato, il metodo ContactStore.FindContactsAsync restituisce una IReadOnlyList<Contact>, ovvero una lista di contatti con soli permessi di lettura, in questo modo non sarà possibile modificare i campi dei contatti presenti sul dispositivo. L oggetto di tipo Contact incapsula quindi tutte le proprietà di un singolo contatto, tra cui: Addresses gli indirizzi Phones i numeri telefonici ConnectedServiceAccounts gli account dei servizi connessi DataSuppliers le fonti dei dati di un contatto. La lunghezza massima della stringa per ogni fonte è di 50 caratteri. DisplayName il nome che viene visualizzato. È possibile accedere a questo campo solo tramite un thread che gestisce l interfaccia grafica. Emails gli indirizzi email Proprietà come Addresses, Emails, Phones restituiscono una collection. 4
Visualizzare la dialog per comporre un SMS o una Email Inviare un SMS: ChatMessage è la classe dell oggetto che rappresenta il messaggio vero e proprio. È possibile ovviamente specificare il corpo del nostro SMS grazie alla proprietà Body, o aggiungere un destinatario tramite la proprietà Recipients. ChatMessageManager espone invece i metodi necessari per l invio del messaggio. Inviare una Email: EmailMessage e EmailManager sono le classi analoghe a ChatMessage e ChatMessageManager per l invio di email. Per inviare email con allegati ci sono due modi: Il primo prevede che l applicazione si comporti come una fonte di condivisione e che condivida i file, in seguito l utente sceglie l app che gestisce le mail come target di condivisione (è pressappoco lo stesso comportamento degli intent impliciti su Android). Nel secondo modo invece l app chiama direttamente il metodo EmailManager.ShowComposeNewEmailAsync per lanciare l app che gestisce le mail e gli passa uno o piu file come allegato. Questo è il codice che fa uso del secondo modo: 5
API per gli appuntamenti in Windows Phone 8.1 Come per i contatti, anche qua abbiamo API intermediarie e ad accesso diretto: Intermediarie Windows.ApplicationModel.Appointments.AppointmentManager: ShowAddAppointmentAsync ShowAppointmentDetailsAsync ShowEditNewAppointmentAsync ShowRemoveAppointmentAsync ShowReplaceAppointmentAsync ShowTimeFrameAsync Tutti questi sono metodi statici che mostrano l interfaccia intermediaria (ad esempio l applicazione di default Calendario) per la gestione degli appuntamenti. Gli appuntamenti creati tramite i metodi ShowAdd o ShowEditNew ottengono un RoamingId che può essere utilizzato per identificare i diversi appuntamenti. Non richiede permessi nel manifest Accesso diretto Windows.ApplicationModel.Appointments.AppointmentManager: RequestStoreAsync Ottiene l oggetto di tipo AppointmentStore, il quale permette di svolgere operazioni sugli appuntamenti per le applicazioni che hanno bisogno di ottenere programmaticamente i dettagli sugli appuntamenti. Richiede il permesso per gli appuntamenti nel manifest. Window.ApplicationModel.Appointments.AppointmentStore: FindAppointmentCalendarAsync FindAppointmentsAsync GetAppointmentAsync GetAppointmentCalendarAsync FindConflictAsync Metodi per cercare oggetti di tipo AppointmentCalendars e Appointments all interno dell AppointmentStore. ShowAddAppointmentAsync ShowAppointmentDetailsAsync ShowEditNewAppointmentAsync ShowRemoveAppointmentAsync ShowReplaceAppointmentAsync Stessi nomi dei metodi statici della classe AppointmentManager vista precedentemente, tuttavia questi metodi utilizzano un local id che è disponibile solo ed esclusivamente accedendo all AppointmentStore. Sono metodi di istanza usati per invocare l interfaccia di default dell applicazione Calendario affinché l utente possa operare sugli oggetti di tipo Appointment. 6
Creare appuntamenti Il metodo ShowAddAppointmentAsync restituisce un appointment id se l appuntamento è stato correttamente aggiunto al calendario dell utente. Questo id dovrebbe essere salvato all interno dell applicazione in modo tale che l appuntamento possa in futuro essere sostituito o cancellato. Una stringa vuota come valore di ritorno indica che l utente ha annullato l operazione prima che l appuntamento fosse aggiunto. Invocare l applicazione Calendario Mostrare un appuntamento nell applicazione Calendario: Mostrare l applicazione Calendario: 7