Xamarin Forms - Iniciando outra App (Launcher)


 Neste artigo vou mostrar como podemos iniciar uma aplicação de terceiros a partir de uma aplicação Xamarin Forms usando a biblioteca Xamarin Essentials.

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

O template de projeto padrão da versão atual Visual Studio 2019 (16.4.5) já inclui o pacote do Xamarin Essentials(1.3.1) instalado e a versão atual do Xamarin Forms (v4.3.0908765) não necessita nenhum ajuste para a plataforma Android.

A classe Launcher permite que um aplicativo abra um URI pelo sistema. Isso geralmente é usado para fazer  a vinculação profunda(DeepLinking) nos esquemas de URI personalizados de outro aplicativo.

Um DeepLinking é um tipo de link que envia usuários diretamente para um aplicativo em vez de um site ou loja.

A classe Launcher oferece métodos Async importantes que precisamos conhecer:

Assim para usar esse recurso basta chamar o método OpenAsync e passar uma string ou Uri que deseja abrir.

Você pode usar o método CanOpenAsync para verificar se o esquema URI pode ser tratado por um aplicativo no dispositivo.

Vamos lá...

Recursos usados:

Criando o projeto no VS 2019

Abra o  VS 2019 Community e clique em Create New Project e a seguir escolha:

Clique em Next e informe o nome XF_IniciaApp1;

A seguir clique no botão Create :

A seguir selecione o template Blank e a plataforma Android (eu não tenho ambiente para o projeto iOS) e clique no botão OK:

Pronto, nosso projeto já esta criado.

No projeto Android na pasta Resource/drawable vamos incluir a imagem que iremos usar no projeto:

Se você criar o projeto iOS vai precisar fazer o seguinte ajuste:

No iOS 9 e superior, a Apple aplica quais esquemas um aplicativo pode consultar. Para especificar quais esquemas você gostaria de usar, você deve especificar LSApplicationQueriesSchemes no seu arquivo Info.plist. No caso do Facebook é : "fb"

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fb</string>
</array>

Definindo o código da MainPage

Agora abra o arquivo MainPage.xaml e inclua o código abaixo:

<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="XF_IniciaApp1.MainPage">
    
    <StackLayout>
        <Image Source="maco1b.jpg" Opacity="0.6" VerticalOptions="Start" Margin="0,3,0,0"/>       
        <Button Text="Abrir Facebook"
                Margin="20"
                Clicked="Button_Clicked"
                VerticalOptions="CenterAndExpand"
                HorizontalOptions="FillAndExpand"
                BackgroundColor="#1b89c0"
                TextColor="White"/>
    </StackLayout>
</ContentPage>

Aqui estamos exibindo uma imagem e definindo um botão de comando onde no evento Button_Clicked vamos definir o código do Laucher para abrir o Facebook.

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

using System;
using System.ComponentModel;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace XF_IniciaApp1
{
    [DesignTimeVisible(false)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
        private async void Button_Clicked(object sender, EventArgs e)
        {
            if (await Launcher.CanOpenAsync("fb://"))
            {
                await Launcher.OpenAsync("fb://");
            }
        }
    }
}

Executando o projeto teremos o seguinte resultado:

Estou testando no meu dispositivo Android M1 usando o Vysor para emular no PC.

Simples assim...

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

"Mas Deus escolheu as coisas loucas deste mundo para confundir as sábias; e Deus escolheu as coisas fracas deste mundo para confundir as fortes;
E Deus escolheu as coisas vis deste mundo, e as desprezíveis, e as que não são, para aniquilar as que são;
Para que nenhuma carne se glorie perante ele."

1 Coríntios 1:27-29

Referências:


José Carlos Macoratti