Como utilizar o Address Chooser Task no Windows Phone

Veja neste artigo como utilizar o Address Chooser Task para obter o endereço de um contato selecionado pelo usuário.

Com certeza, em um dos seus projetos, você terá a necessidade de obter o endereço de um contato do seu usuário no Windows Phone, e esse Task é utilizado justamente para isso. O Address Chooser Task inicia o aplicativo de Contatos, permitindo assim ao usuário escolher um contato de sua lista. Assim que o usuário concluir a tarefa, é gerado um evento e o manipulador de eventos recebe um endereço no resultado.

No exemplo deste artigo será criada uma aplicação em que o usuário irá selecionar o contato e os dados deste contato serão exibidos em seguida na mesma página em um formulário.

Abra o Visual Studio e crie um projeto Windows Phone Application chamado ProjetoAddressChooser conforme a Figura 1.

Figura 1. Criação do Projeto ProjetoAddressChooser no Visual Studio

Ao criar o projeto, é exibida uma caixa com a opção de escolha da versão do Windows Phone, escolha a 7.1, pois assim o seu aplicativo funcionará em todas as versões de Windows Phone disponíveis.

Abra o arquivo MainPage.xaml e vá ao content panel para adicionar um stackpanel que conterá o Botão que irá exibir ao usuário a seleção de contato e um formulário que iniciará no Visibility Collapsed, a MainPage.xaml deverá ficar conforme mostra a Listagem 1.

<phone:PhoneApplicationPage x:Class="ProjetoAddressChooser.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" /> <TextBlock x:Name="PageTitle" Text="contatos" Margin="9,-7,0,0" /> </StackPanel> <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Width="450" Height="500" VerticalAlignment="Top"> <StackPanel Width="450" Height="80" VerticalAlignment="Top"> <Button Name="btnExibirContatos" Width="400" Height="80" Content="Exibir Contatos" Click="btnExibirContatos_Click_1"/> </StackPanel> <Border Name="brdFormulario" BorderBrush="White" BorderThickness="2" Width="450" Height="400" Visibility="Collapsed"> <StackPanel Width="450" Height="400"> <TextBlock Foreground="White" Text="Formulário" FontWeight="Bold" FontSize="25" Margin="10"/> <TextBlock Name="lblNome" Foreground="White" Text="Nome : " FontSize="25" Margin="10"/> <TextBlock Name="lblEndereco" Foreground="White" Text="Endereço : " FontSize="25" Margin="10"/> </StackPanel> </Border> </StackPanel> </Grid> </Grid> </phone:PhoneApplicationPage>
Listagem 1. Criação do StackPanel que conterá o botão de seleção de contato e o formulário

Então, agora abra o arquivo MainPage.xaml.cs e adicione uma referência no topo da classe para o Microsoft.Phone.Tasks como mostra a Listagem 2.

using Microsoft.Phone.Tasks;
Listagem 2. Adicionando referência

Agora você deverá tratar e utilizar a classe no evento btnExibirContatos_Click_1 para exibir a lista de contatos, como mostra a listagem 3. No caso, é feita uma instância da classe AddressChooserTask e então a criação do método call-back após o término da escolha do contato e também o método Show para exibir a lista de contatos ao usuário; Você deverá também implementar o método addressChooser_Completed, para manipular e receber as informações do contato que o usuário escolheu, veja na Listagem 3.

Observação: O método de call-back é colocado antes do método Show do AddressChooserTask porque é uma chamada assíncrona, ou seja, ele já deve saber o que irá fazer ao completar a ação antes de iniciá-la.
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace ProjetoAddressChooser { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } private void btnExibirContatos_Click_1(object sender, RoutedEventArgs e) { AddressChooserTask addressChooser = new AddressChooserTask(); addressChooser.Completed += addressChooser_Completed; addressChooser.Show(); } void addressChooser_Completed(object sender, AddressResult e) { if (e.TaskResult == TaskResult.OK) { string endereco = e.Address; string nome = e.DisplayName; exibirFormulario(nome,endereco); } else { MessageBox.Show("Erro ao buscar contato."); } } private void exibirFormulario(string nome, string endereco) { lblNome.Text = nome; lblEndereco.Text = endereco; brdFormulario.Visibility = System.Windows.Visibility.Visible; } } }
Listagem 3. Implementação dos métodos na classe MainPage.xaml.cs

Por ser uma plataforma bastante segura, o Windows Phone restringe e limita certos acessos ao desenvolvedor, como por exemplo, a navegação das páginas com a passagem dos dados do contato como parâmetro. Apesar da limitação, isso garante para os usuários uma maior confiança nas aplicações desenvolvidas para o Windows Phone e aprovadas no Windows Phone Store.

Para efetuar o teste desta aplicação no emulador, é necessário que você adicione uma conta de e-mail para conter os contatos disponíveis para seleção, conforme o exemplo. Então abra o emulador e vá em configuração, conforme a Figura 2.

Figura 2. Como acessar a configuração no emulador do Windows Phone

E então agora selecione email+accounts nas opções de configuração e clique em add na account, como mostra a Figura 3.

Figura 3. Adicionando nova conta nas configurações

Então, agora selecione uma conta de e-mail para vincular e insira os dados seguindo os passos indicados no dispositivo.

Após a configuração de pelo menos uma conta de e-mail, você poderá pressionar F5 e testar sua aplicação, como mostra a Figura 4.

Figura 4. Testando a aplicação

Artigos relacionados