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:
- Body (string): como o nome sugere, esta propriedade representa o corpo da mensagem. Podemos, por exemplo, solicitar que o usuário digite ou definir um texto fixo via código.
- To (string): esta propriedade representa o número ou nome para o qual o SMS será enviado. É importante que aqui seja informado um número válido ou o nome de um contato, exatamente como ele aparece na agenda. Podem ser informados vários destinatários, separados por ponto e vírgula, assim como ocorre no aplicativo de mensagens (que será aberto, no fim das contas).
- Show(): o único método que nos interessa aqui, responsável por abrir o aplicativo de mensagens com os destinatários e o corpo da mensagem já definidos. O usuário precisa somente tocar no botão Enviar.
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.
<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.
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.