Xamarin Forms - Enviando SMS com Xamarin Essentials
Neste artigo vou mostrar como podemos enviar SMS em uma aplicação Xamarin Forms usando a biblioteca Xamarin Essentials. |
A Para enviar SMS em aplicações Xamarin Forms podemos usar a classe Sms que permite abrir um aplicativo de SMS padrão com uma determinada mensagem e enviar ao destinatários.
Para ter acesso a essa classe vamos usar a biblioteca Xamarin Essentials. Se você não conhesse essa biblioteca leia o meu artigo: Introdução ao Xamarin Essentials
Vamos lá...
Recursos usados:
Visual Studio Community 2017 ou Xamarin Studio
Criando o projeto e instalando as dependências
Abra o VS 2017 Community e clique em New Project e a seguir escolha Cross Platform -> Mobile App (Xamarin.Forms) e informe o nome XF_SMS1:
A seguir selecione a Plataforma, eu marquei somente Android, e escolha a estratégia de compartilhamento que será .NET Standard.
Clique no botão OK.
Pronto nosso projeto já esta criado. ( Atualmente(11/2018) a versão mais atual estável é a 3.4.0.1)
No menu Tools, clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;
Digite : Xamarin.Essentials para localizar o pacote e a seguir marque o pacote e instale-o em todos os projetos:
Pronto ! agora já temos todos os recursos necessários nos projetos falta fazer alguns ajustes no projeto Android.
Ajustes a serem feitos na plataforma Android
Lembrando que a biblioteca Xamarin.Essentials suporta a versão mínima 4.4 do Android, e, que a versão do Android para compilação deve ser 8.1 - API Level 27.
No momento em que esse artigo foi escrito os ajustes necessários na plataforma Android eram os seguintes :
Nota: Orientação obtida em: https://docs.microsoft.com/pt-br/xamarin/essentials/geolocation?tabs=android
No arquivo MainActivity.cs inclua a seguinte instrução:
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
A seguir inclua também o método abaixo neste arquivo:
public override void OnRequestPermissionsResult(int requestCode, string[]
permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions,
grantResults);
base.OnRequestPermissionsResult(requestCode, permissions,
grantResults);
}
Na pasta Resources/drawable
do projeto Android eu inclui a imagem maco.jpg usada
no projeto:
Definindo o código da MainPage
Agora abra o arquivo MainPage.xaml e inclua as seguintes views usando um layout StackLayout:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XF_SMS1"
x:Class="XF_SMS1.MainPage">
<StackLayout>
<StackLayout HorizontalOptions="Center" VerticalOptions="Start">
<Image Margin="0,50,0,0" x:Name="imgBanner" Source="maco.jpg" ></Image>
<Label Margin="0,0,0,10" FontAttributes="Bold" FontSize="Large" TextColor="#CA6F1E"
HorizontalTextAlignment="Center" Text="SMS"></Label>
<Entry x:Name="txtNumero" Placeholder="Informe o número"></Entry>
<Entry x:Name="txtMensagem" Placeholder="Informe a mensagem..."></Entry>
<Button x:Name="btnEnviaSms" Text="Enviar SMS" Clicked="btnEnviaSms_Clicked"/>
</StackLayout>
</StackLayout>
</ContentPage>
|
Agora abra o arquivo MainPage.xaml.cs e defina o código para o evento do botão de comando e a definição do método para enviar o SMS:
using System;
using System.Threading.Tasks;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace XF_SMS1
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void btnEnviaSms_Clicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtNumero.Text))
{
await EnviaSms(txtMensagem.Text, txtNumero.Text);
}
}
public async Task EnviaSms(string texto, string recipiente)
{
try
{
var mensagem = new SmsMessage(texto, recipiente);
await Sms.ComposeAsync(mensagem);
}
catch (FeatureNotSupportedException ex)
{
await DisplayAlert("Falhou !!!", "O envio de Sms não é suportado neste dispositivo." + ex.Message, "OK");
}
catch (Exception ex)
{
await DisplayAlert("Falhou !!!", ex.Message, "OK");
}
}
}
}
|
O envio do SMS funciona chamando o método ComposeAsync de uma SmsMessage que contém o destinatário da mensagem e o corpo da mensagem, sendo ambos opcionais.
Executando o projeto e informando o número do destinatário e o texto da mensagem iremos obter o resultado conforme mostram as figuras abaixo:
Obs: Para efetivamente enviar um SMS a aplicação deve ser compilada para um dispositivo físico. Em um emulador o processo em geral não funciona.
Pegue o código do projeto compartilhado e o arquivo MainActivity aqui : XF_SMS1.zip (sem as referências)
"Porque Deus não nos destinou para a ira, mas para a aquisição da salvação, por nosso Senhor Jesus Cristo."
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
https://developer.xamarin.com/api/property/Android.Widget.ListView.Adapter/
https://developer.xamarin.com/guides/xamarin-forms/user-interface/animation/
Xamarin Forms - Obtendo a Geolocalização e exibindo a ... - Macoratti