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.

Script via e-mail

Iscriviti alle nostre newsletter tematiche unoscript@lgiorno per ricevere gli script via e-mail.

Iscrivi subito! »»»

Il forum su Windows Phone

Se hai problemi con lo sviluppo per Windows Phone, puoi trovare aiuto nella nostra community!

Partecipa al forum su Windows Phone!

In primo piano
Media
In evidenza
MISC