Compartilhar via


Como receber texto (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Texto talvez seja o formato de dados mais comum compartilhado por usuários. Além de ser a primeira escolha para conteúdo como, por exemplo, atualizações de status, trata-se de uma opção recomendável para aplicativos que compartilham links, HTML e outras informações.

Ao escrever um aplicativo de destino, normalmente você deve dar suporte a texto como parte do compartilhamento. Isso garante que os usuários selecionarão o seu aplicativo em uma ampla variedade de situações. Dito isso, não suporte texto se você acha que o recurso confundirá os usuários. Por exemplo, se o seu aplicativo lida, sobretudo, com arquivos, uma representação textual desses arquivos não vai corresponder às expectativas do usuário.

O que você precisa saber

Tecnologias

Pré-requisitos

  • Você deve estar familiarizado com o Visual Studio e com os modelos a ele associados.
  • Você deve ter familiaridade com JavaScript.

Instruções

Etapa 1: Suporte o contrato de Compartilhamento

Antes que seu aplicativo possa receber conteúdo compartilhado, você tem que declarar que ele suporta o contrato de Compartilhamento. Esse contrato permite, essencialmente, que o sistema saiba que o seu aplicativo está disponível para receber conteúdo. Se estiver usando um modelo do Microsoft Visual Studio para criar seu aplicativo, aqui está como ter suporte para o contrato de Compartilhamento de Destino:

  1. Abra o arquivo de manifesto (package.appxmanifest).
  2. Abra a guia Declarações.
  3. Escolha Compartilhar Destino na lista Declarações Disponíveis.
  4. Clique em Adicionar para adicionar suporte ao contrato de Compartilhamento de Destino em seu aplicativo.

Etapa 2: Especifique que o seu aplicativo suporta texto

Ao escrever um aplicativo de destino, você pode especificar tipos de arquivos e formatos. Para especificar os tipos de arquivos suportados:

  1. Abra arquivo de manifesto.
  2. Na seção Tipos de Arquivos com Suporte, clique em Adicionar novo.
  3. Digite .txt. É necessário incluir o ponto (.) antes de "txt", mas não o que vem depois.

Para especificar que você suporta texto como um formato de dados:

  1. Abra arquivo de manifesto.
  2. Na seção Formatos de dados, clique em Adicionar novo.
  3. Digite "texto" (sem aspas).

As etapas anteriores adicionam a seguinte seção ao manifesto:

<Extensions>
  <Extension Category="windows.shareTarget">
    <ShareTarget>
      <DataFormat>text</DataFormat>
    </ShareTarget>
  </Extension>
</Extensions>

Observação  Você pode especificar um ponto de entrada diferente quando seu aplicativo for ativado para o contrato de Compartilhamento de Destino. Para fazer isso, modifique a entrada da página Iniciarna seção de configurações do Aplicativoda declaração do Destino de Compartilhamento no manifesto do pacote. É altamente recomendável que você também use um arquivo JavaScript separado que cuide da ativação desta página. Por exemplo, dê uma olhada em Exemplo de aplicativo de compartilhamento de destino de conteúdo.

 

Etapa 3: Adicione um manipulador de eventos para detectar quando o seu aplicativo é ativado.

Quando um usuário seleciona o seu aplicativo para compartilhar conteúdo, o sistema ativa o aplicativo. Como existem muitas maneiras disso acontecer, você precisa adicionar o código a seu manipulador de eventos que detecta o motivo pelo qual ocorreu a ativação. Você pode fazer isso verificando o valor da propriedade kind.

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        ...
    }
};

Etapa 4: Obtenha o objeto ShareOperation.

O objeto ShareOperation contém todos os dados necessários para que o seu aplicativo obtenha o conteúdo que o seu usuário quiser compartilhar.

shareOperation = args.detail.shareOperation;

Etapa 5: Retorne do manipulador de eventos ativados rapidamente.

O manipulador de eventos activated deve retornar rapidamente. Coloque na fila um evento assíncrono a partir do manipulador de eventos activated dessa forma, o processamento de compartilhamento dedados ocorre depois que o evento ativado retorna.

WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });

As etapas remanescentes implementam a função shareReady.

Etapa 6: Verifique se os dados de compartilhamento contêm texto.

A propriedade shareOperation.data contém um objeto DataPackageView. Esse objeto é, em essência, uma versão apenas leitura do objeto DataPackage que o aplicativo de origem usou para criar os dados. Use esse objeto para verificar se o conteúdo compartilhado está no formato de texto.

if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
    // Code to process text goes here.      
}

Verificar se o DataPackage contém o formato de dados em que você está interessado é uma prática recomendada, mesmo se o seu aplicativo aceitar somente um formato. Isso facilita o suporte futuro a outros de outros formatos de dados.

Etapa 7: Processe o texto.

Para obter o texto, chame o método DataPackageView.getText.

shareOperation.data.getTextAsync().done(function (text) {
    // To output the text using this example, 
    // you need a div tag with an id of "output" in your HTML file.
    document.getElementById("output").innerText = text;
});

Evidentemente, o que você faz com o texto depende do seu aplicativo.

Etapa 8: Chame reportCompleted.

Depois que o aplicativo concluir com sucesso o compartilhamento do conteúdo, chame reportCompleted. Depois que você chamar este método, o sistema ignora seu aplicativo.

shareOperation.reportCompleted();

Comentários

Dê uma olhada em nosso exemplo de código Exemplo de aplicativo de compartilhamento de destino de conteúdo para ver a experiência ponta a ponta inteira de um aplicativo que recebe texto como parte do compartilhamento.

var shareOperation = null;

function shareReady(args) {
    if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
        shareOperation.data.getTextAsync().done(function (textValue) {
            // To output the text using this example, you need a div tag with an 
            // id of "output" in your HTML file.
            document.getElementById("output").innerText = textValue;
        });
    }
}

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
        args.setPromise(WinJS.UI.processAll());
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        // This app has been activated share.
        args.setPromise(WinJS.UI.processAll());

        // We receive the ShareOperation object as part of the eventArgs.
        shareOperation = args.detail.shareOperation;

        // We queue an asychronous event so that working with the ShareOperation object 
        // does not block or delay the return of the activation handler.
        WinJS.Application.addEventListener("shareready", shareReady, false);
        WinJS.Application.queueEvent({ type: "shareready" });
    }
};

Tópicos relacionados

Exemplo de aplicativo de compartilhamento de destino de conteúdo

Compartilhando e trocando dados

Como receber arquivos

Como receber HTML

Como receber um link

Início rápido: recebendo conteúdo compartilhado

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Diretrizes para depurar aplicativos de destino