Accedere alla lista contatti in Windows Phone 7.1

di Alessio Leoncini, in Windows Phone 7.1, Windows Phone,

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.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi