Accedere alla lista contatti in Windows Phone 7.1
Nella nuova versione di Windows Phone abbiamo a disposizione la classe Contacts del namespace Microsoft.Phone.UserData, che ci permette di accedere a tutti i dati della lista contatti.
Contacts dispone del metodo SearchAsync e dell'evento SearchCompleted che permettono di ottenere la lista e di effettuare anche un filtro sui dati, specificando il testo ed il tipo di ricerca, attraverso l'enum FilterKind.
contacts.SearchAsync("chiave di ricerca", FilterKind.None, null);
public enum FilterKind
{
None,
PinnedToStart,
EmailAddress,
PhoneNumber,
DisplayName,
}Nel metodo gestore dell'evento, la proprietà Results del parametro ContactsSearchEventArgs espone un ricco grafo di oggetti/proprietà con tutte le informazioni correlate ai contatti. Di seguito un esempio dei campi principali:
Contacts contacts = new Contacts(); contacts.SearchCompleted += (object obj, ContactsSearchEventArgs args) => { var data = new List<string>(); foreach (var rst in args.Results) { string contact = rst.ToString(); ContactEmailAddress email = rst.EmailAddresses.FirstOrDefault(); if (email != null) contact += String.Format("{0} {1}: {2}", Environment.NewLine, email.Kind, email.EmailAddress); Account acc = rst.Accounts.FirstOrDefault(); if (acc != null) contact += String.Format("{0} {1}: {2}", Environment.NewLine, acc.Kind, acc.Name); IEnumerable<ContactAddress> add = rst.Addresses; foreach (var cAdd in add) { contact += String.Format("{0} {1}: {2}", Environment.NewLine, cAdd.Kind, cAdd.PhysicalAddress.AddressLine1); contact += String.Format("{0} {1}: {2}", Environment.NewLine, cAdd.Kind, cAdd.PhysicalAddress.City); contact += String.Format("{0} {1}: {2}", Environment.NewLine, cAdd.Kind, cAdd.PhysicalAddress.PostalCode); } ContactPhoneNumber pNum = rst.PhoneNumbers.FirstOrDefault(); if (pNum != null) contact += String.Format("{0} {1}: {2}", Environment.NewLine, pNum.Kind, pNum.PhoneNumber); data.Add(contact); } Results.ItemsSource = data; }; contacts.SearchAsync(string.Empty, FilterKind.None, null);

Con questa classe è possibile accedere solo ai dati della lista contatti sul device e non a quelli dei social network collegati. Inoltre tale accesso è in sola lettura.








