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);
}
}
}
}
...
Espero que tenham gostado.
Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)
Fonte: Blog do Eduardo H. Rizo
Comentários