Enviando SMS em aplicações Windows Phone

Veja neste artigo como enviar mensagens SMS a partir de aplicações para Windows Phone.

Introdução

Uma das tarefas mais realizadas a partir de smartphones é o envio de mensagens de texto (SMS). Muitos preferem enviar um SMS a ligar diretamente para o destinatário, pois com o texto consegue passar toda informação de uma única vez, dispensando cumprimentos e despedidas desnecessários.

Atualmente, muitas empresas também aderiram a este método para passar informações para seus clientes de forma mais prática. Um exemplo disso é observado em algumas operadoras de cartão de crédito, que notificam o usuário quando uma compra é efetuada com seu cartão.Então, sabendo dessa realidade e da importância que possuem as mensagens de texto, nada melhor que integrá-las às nossas aplicações, permitindo ao usuário enviar SMS para um determinado número sem precisar sair da aplicação (ou “minimizá-la”) e acessar o aplicativo de mensagens.

No Windows Phone, essa é uma tarefa consideravelmente simples e pode ser realizada com o auxílio da classe SmsComposeTask, contida no namespace Microsoft.Phone.Tasks.

Essa classe possui basicamente duas propriedades e um método que são relevantes para nós neste momento:

Mãos à obra

Já conhecemos a classe que iremos utilizar, então já podemos criar uma nova aplicação para Windows Phone no Visual Studio, utilizando o template Windows Phone App.

Na página principal (MainPage.xaml), vamos inserir um botão no grid principal, para enviar o SMS. O conteúdo dessa página deve ficar como mostrado na Listagem 1.

Listagem 1. Conteúdo da página MainPage.xaml

            <phone:PhoneApplicationPage 
            x:Class="PhoneApp1.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="DevMedia" />
                <TextBlock x:Name="PageTitle" Text="Enviar SMS" Margin="9,-7,0,0" />
            </StackPanel>
        
            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <StackPanel>
                    <Button x:Name="btnEnviar" Content="Enviar SMS" Click="btnEnviar_Click"></Button>
                </StackPanel>
            </Grid>
        </Grid>
         
        </phone:PhoneApplicationPage>
        

A interface da página deve fica como ilustrada na Figura 1.


Figura 1: Interface da aplicação

Para codificar o event handler do evento Click do botão Enviar, podemos dar dois clique sobre ele na interface, ou clicar com o botão direito na tag Button e utilizar a opção Navigate to Event Handler, como mostra a Figura 2.


Figura 2: Navegando para o event handler do botão

Isso nos levará ao código C#, na função btnEnviar_Click, que trata o evento Click do botão.

Lá instanciaremos a classe SmsComposeTask, preenchendo as propriedade Body e To e invocando o método Show, conforme vemos na Listagem 2.

Listagem 2. Evento Click do botão Enviar

            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.UserData;
            using Microsoft.Phone.Tasks;
            
            namespace PhoneApp1
            {
                public partial class MainPage : PhoneApplicationPage
                {
                    // Constructor
                    public MainPage()
                    {
                        InitializeComponent();
                    }
            
                    private void btnEnviar_Click(object sender, RoutedEventArgs e)
                    {
                        SmsComposeTask sms = new SmsComposeTask();
                        sms.To = "Andrew Hill; 88997755";
                        sms.Body = "Este é o corpo da mensagem";
                        sms.Show();
                    }
                }
            }
        

É importante observar que na seção de usings adicionamos o namespace Microsoft.Phone.Tasks, onde está contida a classe SmsComposeTask, como já foi citado anteriormente.

Executando a aplicação e tocando no botão, teremos o seguinte resultado:


Figura 3: Aplicativo de mensagens aberto pela aplicação

Agora basta pressionar o botão “enviar” (send) para que a mensagem seja enviada. Ao fazer isso no emulador, obteremos um erro, pois não há uma conta de telefonia válida para realizar tal serviço.

Para resolver isso, é só executar a aplicação em um aparelho com uma conta válida.

Como vimos, basicamente fizemos uso da classe SmsComposeTask, que abre o aplicativo de mensagens para permitir ao usuário enviar SMS.

Então finalizamos aqui este breve artigo. Quaisquer dúvidas, sugestões ou críticas podem ser registradas na seção de comentários, abaixo.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados