Desenvolvimento do Windows 10 - Contrato de Compartilhamento
Neste capítulo, aprenderemos como compartilhar dados entre aplicativos. Os usuários muitas vezes encontram informações que ficam ansiosos para compartilhar com alguém ou usá-las em outro aplicativo. Hoje em dia, os usuários querem usar a tecnologia para se conectar e compartilhar com outras pessoas.
Um usuário pode querer compartilhar -
- Um link com sua rede social
- Copie uma imagem em um relatório
- Faça upload de um arquivo para armazenamento em nuvem
Os aplicativos de hoje precisam garantir que os dados que usam também estejam disponíveis para os usuários compartilharem e trocarem. Compartilhar é um recurso leve, fácil de adicionar ao seu aplicativo UWP. Existem várias maneiras de os aplicativos trocarem dados com outros aplicativos.
Em aplicativos UWP, o recurso de compartilhamento pode ser suportado das seguintes maneiras;
Primeiro, o aplicativo pode ser um aplicativo de origem que fornece conteúdo que o usuário deseja compartilhar.
Em segundo lugar, o aplicativo pode ser um aplicativo de destino que o usuário seleciona como destino para o conteúdo compartilhado.
Um aplicativo também pode ser um aplicativo de origem e um aplicativo de destino.
Compartilhando conteúdo
Compartilhar conteúdo de um aplicativo, que é um aplicativo de origem, é muito simples. Para realizar qualquer operação de compartilhamento, você precisará doDataPackageobjeto de classe. Este objeto contém os dados que o usuário deseja compartilhar.
Os seguintes tipos de conteúdo podem ser incluídos em DataPackage objeto -
- Texto simples
- Identificadores Uniformes de Recursos (URIs)
- HTML
- Texto formatado
- Bitmaps
- Files
- Dados definidos pelo desenvolvedor
Ao compartilhar dados, você pode incluir um ou mais dos formatos mencionados acima. Para oferecer suporte ao compartilhamento em seu aplicativo, primeiro você precisa obter a instância doDataTransferManager classe.
Em seguida, ele registrará um manipulador de eventos que é chamado sempre que um DataRequested evento ocorre.
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
DataRequestedEventArgs>(this.ShareTextHandler);
Quando seu aplicativo recebe um DataRequest objeto, então seu aplicativo está pronto para adicionar o conteúdo que o usuário deseja compartilhar.
private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e){
DataRequest request = e.Request;
// The Title is mandatory
request.Data.Properties.Title = "Share Text Example";
request.Data.Properties.Description = "A demonstration that shows how to share text.";
request.Data.SetText("Hello World!");
}
Qualquer conteúdo que seu aplicativo compartilha deve conter duas propriedades -
- Uma propriedade Title, que é obrigatória e deve ser definida.
- O próprio conteúdo.
Recebendo conteúdo compartilhado
Se você deseja que seu aplicativo possa receber conteúdo compartilhado, a primeira coisa que você precisa fazer é declarar que ele suporta o Share Contract. Após a declaração, o sistema irá disponibilizar seu aplicativo para recebimento de conteúdo.
Para adicionar suporte do Contrato de Ações -
Clique duas vezes no package.appmanifest Arquivo.
Vou ao Declarationsaba. EscolherShare Target de Available Declarations lista e clique no Add botão.
Se desejar que seu aplicativo receba qualquer tipo de arquivo como conteúdo compartilhado, você pode especificar os tipos de arquivo e formatos de dados.
Para especificar os formatos de dados que você suporta, vá para o Data Formats seção, do Declarations página e clique Add New.
Digite o nome do formato de dados compatível. Por exemplo,"Text".
Para especificar o tipo de arquivo que você suporta, no Supported File Types seção do Declarations página, clique Add New.
Digite a extensão de nome de arquivo que deseja oferecer suporte, por exemplo, .pdf
Se você quer apoiar All file tipos, verifique o SupportsAnyFileType caixa.
Quando um usuário seleciona seu aplicativo como aplicativo de destino para compartilhar dados, OnShareTargetActivated evento é disparado.
Seu aplicativo precisa lidar com esse evento para processar os dados que o usuário deseja compartilhar.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) {
// Code to handle activation goes here.
}
Todos os dados que o usuário deseja compartilhar com qualquer aplicativo estão contidos em um ShareOperationobjeto. Você também pode verificar o formato dos dados que ele contém.
Abaixo está o trecho de código que trata shared content em formato de texto simples.
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text)) {
string text = await shareOperation.Data.GetTextAsync();
// To output the text from this example, you need a TextBlock control
// with a name of "sharedContent".
sharedContent.Text = "Text: " + text;
}
Vamos dar uma olhada em um exemplo simples criando um novo projeto UWP, que compartilhará um link da web.
A seguir, está o código XAML no qual um botão é criado com algumas propriedades.
<Page
x:Class = "UWPSharingDemo.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:UWPSharingDemo"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d">
<Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation = "Vertical">
<TextBlock Text = "Share Web Link" Style = "{StaticResource
HeaderTextBlockStyle}" Margin = "30"></TextBlock>
<Button Content = "Invoke share contract" Margin = "10"
Name = "InvokeShareContractButton" Click = "InvokeShareContractButton_Click"
></Button>
</StackPanel>
</Grid>
</Page>
Código C # no qual o evento de clique de botão é implementado e um código de compartilhamento de URI é fornecido abaixo.
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The Blank Page item template is documented at
http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace UWPSharingDemo {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page {
DataTransferManager dataTransferManager;
public MainPage() {
this.InitializeComponent();
dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += dataTransferManager_DataRequested;
}
void dataTransferManager_DataRequested(DataTransferManager sender,
DataRequestedEventArgs args) {
Uri sharedWebLink = new Uri("https://msdn.microsoft.com");
if (sharedWebLink != null) {
DataPackage dataPackage = args.Request.Data;
dataPackage.Properties.Title = "Sharing MSDN link";
dataPackage.Properties.Description = "The Microsoft Developer Network (MSDN)
is designed to help developers write applications using Microsoft
products and technologies.";
dataPackage.SetWebLink(sharedWebLink);
}
}
private void InvokeShareContractButton_Click(object sender, RoutedEventArgs e) {
DataTransferManager.ShowShareUI();
}
}
}
Quando o código acima for compilado e executado, você verá a página a seguir no emulador.
Quando o botão é clicado, ele oferece opções para compartilhar em qual aplicativo.
Clique em mensagens e a seguinte janela será exibida, de onde você pode enviar o link para qualquer pessoa.