Quinta-Feira, 15 de Novembro de 2018
Home Devs

[Desenvolvimento] Como obter informações da sua lista de contatos armazenada no WP

23/09/2013 57 0
[Desenvolvimento] Como obter informações da sua lista de contatos armazenada no WP

Olá pessoal, tudo bom?

Segue um exemplo sobre como obter informações da sua lista de contatos armazenada no Windows Phone.

A primeira coisa a fazer é implementar uma classe para representar quais informações sobre os contatos você deseja obter, exibir e/ou manipular. No caso, criei uma classe chamada Contato.cs com a seguinte estrutura:

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.UserData;

namespace Exemplo
{
  public class Contato
  {
    public object Foto { get; set; }
    public string Nome { get; set; }
    public string Telefone { get; set; }
    public string TelefoneCorrigido { get; set; }
  }
}

Em seguida, prepare a interface da APP, que para o exemplo, imaginei um listbox exibindo a foto, o nome da pessoa e o número do telefone celular dos contatos registrados atualmente no Windows Phone. Veja o exemplo:

...

 
   
     
   
   
     
     
   


 
   
   
 


 
   
   
   
     
       
         
           
             
             
           
           
         
       
     
   
 

...

E para concluir, vamos verificar qual a implementação necessária na classe em C# para que os dados possam ser bindados no listbox demonstrado acima.

...
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using Microsoft.Phone.UserData;
using System.Text.RegularExpressions;
using System.Windows.Media.Imaging;
using System.IO;
using System.Windows.Resources;

namespace Exemplo
{
  public partial class MainPage : PhoneApplicationPage
  {
    // Constructor
    public MainPage()
    {
      InitializeComponent();
      ListarContatos();
    }

    public void ListarContatos()
    {
      Contacts c = new Contacts();
      c.SearchCompleted += new EventHandler(c_SearchCompleted);
      c.SearchAsync(string.Empty, FilterKind.None, null);
    }

    void c_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {
      //Trazendo apenas os contatos com números de telefone celular que contenham 8 números ou mais.
      var dados = from c in e.Results
          where c.PhoneNumbers.Count() > 0 &&
          c.PhoneNumbers.Where(x => x.Kind == PhoneNumberKind.Mobile).FirstOrDefault() != null &&
          c.PhoneNumbers.Where(x => x.Kind == PhoneNumberKind.Mobile).FirstOrDefault().PhoneNumber.Length >= 8
          select new Contato
                    {
                      Foto = ObterFoto(c.GetPicture()),
                      Nome = c.DisplayName,
                      Telefone = c.PhoneNumbers.Where(x=>x.Kind == PhoneNumberKind.Mobile).FirstOrDefault().PhoneNumber,
                    };
      lstContatos.ItemsSource = dados;

      txbAguarde.Visibility = System.Windows.Visibility.Collapsed;
      ppbAguarde.IsIndeterminate = false;
   }

   public object ObterFoto(Stream img)
   {
     if (img != null)
        return Microsoft.Phone.PictureDecoder.DecodeJpeg(img);
     else
     {
        //Obtendo uma imagem padrão quando o contato não tem foto.
        Uri uri = new Uri("Imagens/rosto.jpg", UriKind.Relative);
        StreamResourceInfo sri = Application.GetResourceStream(uri);
        return Microsoft.Phone.PictureDecoder.DecodeJpeg(sri.Stream);
     }
   }
  }
}
...
Exemplo em funcionamento no WP

Exemplo em funcionamento no WP

 

Espero que tenham gostado.

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Post relacionado:

Curso Windows Phone Gratuito – Vários tópicos

Compartilhe:

Comentários: