Xamarin Forms - Compartilhando dados


 Neste artigo vou mostrar como compartilhar dados como texto e links com outras aplicações no dispositivo usando os recursos da biblioteca Xamarin Essentials.

A classe Share da biblioteca Xamarin Essentials permite que uma aplicação compartilhe dados como texto e links com outras aplicações no dispositivo.

O recurso de compartilhar (Share) funciona chamando o método RequestAsync com uma carga útil de solicitação de dados que inclui informações para compartilhar com outros aplicativos. O texto e o Uri podem ser misturados e cada plataforma manipulará a filtragem com base no conteúdo.

A Xamarin.Essentials é uma nova biblioteca oficial da Microsoft que fornece aos desenvolvedores mais de 30 APIs de plataforma cruzada para que seus aplicativos móveis acessem os recursos nativos. Isso pode parecer similar aos Plugins for Xamarin, mas é uma evolução que é super otimizada para cada plataforma, fornece uma API consistente e é bem documentada sendo também open source no GitHub.

Motivos para usar:

Se você não conhesse essa biblioteca leia o meu artigo:  Introdução ao Xamarin Essentials e veja também as referências em: Get Start with Xamarin Essentials

Vamos lá...

Recursos usados:

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_Compartilhar:

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. (Eu estou criando apenas o projeto Android mas fique a vontade para criar os demais projetos)

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

No momento em que esse artigo foi escrito os ajustes necessários na plataforma Android eram os seguintes :

No arquivo MainActivity.cs inclua a seguinte instrução:

 Xamarin.Essentials.Platform.Init(this, savedInstanceState);

A seguir inclua também o método abaixo:

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);
}

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_Compartilhar"
             x:Class="XF_Compartilhar.MainPage">
    <StackLayout>
        <Label Margin="0,0,0,10" Text="Compartilhar - Share" FontAttributes="Bold" FontSize="Large" 
TextColor="#CA6F1E"  HorizontalTextAlignment="Center" ></Label>
        <Entry x:Name="txtTexto" Placeholder="Digite alguma coisa..." ></Entry>
        <Entry x:Name="txtUrl" Placeholder="Digite uma url..." ></Entry>
        <Button x:Name="btnCompartilhaTexto" Text="Compartilhar texto" Clicked="btnCompartilhaTexto_Clicked"/>
        <Button x:Name="btnCompartilhaUrl" Text="Compartilhar URL" Clicked="btnCompartilhaURL_Clicked"/>
    </StackLayout>
</ContentPage>

Agora abra o arquivo MainPage.xaml.cs e defina o código para o evento do botão :

using System.Threading.Tasks;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace XF_Compartilhar
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
        async void btnCompartilhaTexto_Clicked(object sender, System.EventArgs e)
        {
            await CompartilharTexto(txtTexto.Text);
        }
        public async Task CompartilharTexto(string texto)
        {
            await Share.RequestAsync(new ShareTextRequest
            {
                Text = texto,
                Title = "Compartilhando texto"
            });
        }
        async void btnCompartilhaURL_Clicked(object sender, System.EventArgs e)
        {
            await CompartilharUri(txtUrl.Text);
        }
        public async Task CompartilharUri(string uri)
        {
            await Share.RequestAsync(new ShareTextRequest
            {
                Uri = uri,
                Title = "Compartilhando link"
            });
        }
    }
}

Estamos usando o método Share.RequestAsync() para compartilhar texto e links.

Executando o projeto teremos o seguinte resultado:

Pegue o código das páginas aqui :  XF_Compartilhar.zip (somente o projeto compartilhado)

"Como está escrito : Não há um justo, nem um sequer."
Romanos 3:10

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:


José Carlos Macoratti