Compartir a través de


Cómo recibir texto (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

El texto es posiblemente el más común de todos los formatos de datos que los usuarios comparten. Además de ser la prima opción para el contenido como las actualizaciones de estado, es una opción recomendada para las aplicaciones que comparten vínculos, contenido HTML y otra información.

Al escribir una aplicación de destino, normalmente debes admitir texto como parte de la operación de uso compartido. Esto garantiza que los usuarios puedan seleccionar tu aplicación en una amplia variedad de situaciones. Dicho esto, no admitas texto si crees que solamente confundirá a los usuarios. Por ejemplo, si tu aplicación trabaja con archivos principalmente, una representación de texto de esos archivos no cumplirá con las expectativas de los usuarios.

Lo que debes saber

Tecnologías

Requisitos previos

  • Debes estar familiarizado con Visual Studio y sus plantillas asociadas.
  • Debes estar familiarizado con JavaScript.

Instrucciones

Paso 1: Admitir el contrato para contenido compartido

Antes de que tu aplicación pueda recibir contenido compartido, debes declarar que admite el contrato para contenido compartido. Este contrato permite que el sistema sepa que tu aplicación está disponible para recibir contenido. Si estás utilizando una plantilla de Microsoft Visual Studio para crear tu aplicación, a continuación te mostramos la forma de admitir el contrato para contenido compartido:

  1. Abre el archivo de manifiesto (package.appxmanifest).
  2. Abre la pestaña Declaraciones.
  3. Elige la opción Compartir destino en la lista Declaraciones disponibles.
  4. Haz clic en Agregar para agregar soporte para el Contrato para aceptar contenido compartido en tu aplicación.

Paso 2: Especifica que tu aplicación admite texto.

Al escribir una aplicación de destino, puedes especificar los formatos y los tipos de archivo. Para especificar los tipos de archivo admitidos:

  1. Abre el archivo de manifiesto.
  2. En la sección Tipos de archivo admitidos, haz clic en Agregar nuevo.
  3. Escribe .txt. Debes incluir el punto (.) que aparece antes de "txt", no el que aparece después.

Para especificar la compatibilidad con el texto como formato de datos:

  1. Abre el archivo de manifiesto.
  2. En la sección Formatos de datos, haz clic en Agregar nuevo.
  3. Escribe "text" (sin las comillas).

Los pasos anteriores agregan la siguiente sección al manifiesto:

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

Nota  Puedes especificar un punto de entrada de diferente cuando tu aplicación se activa para el Contrato para aceptar contenido compartido. Para ello, modifica la entrada Página de inicio en la sección Configuración de la aplicación de la declaración Compartir contenido, en el manifiesto de la aplicación. Es muy recomendable que uses también un archivo de JavaScript diferente para administrar la activación de esta página. Para ver un ejemplo, consulta Muestra de una aplicación de destino de contenido compartido.

 

Paso 3: Agrega un controlador de eventos para detectar el momento en que se activa tu aplicación.

Cuando un usuario selecciona tu aplicación para compartir contenido, el sistema la activa. Puesto que existen muchas maneras por las que se puede activar, debes agregar el código que detecta el motivo por el que se produjo la activación. Para hacer esto, debes activar el valor de la propiedad 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) {
        ...
    }
};

Paso 4: Obtén el objeto ShareOperation.

El objeto ShareOperation incluye todos los datos que tu aplicación necesita para obtener el contenido que un usuario quiere compartir.

shareOperation = args.detail.shareOperation;

Paso 5: Vuelve rápidamente del controlador del evento activado.

El controlador del evento activated debe volver rápidamente. Pon en cola un evento asincrónico del controlador del evento activated para que el procesamiento de los datos compartidos se realice después de que vuelva el evento activado.

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

Los pasos restantes implementan la función shareReady.

Paso 6: Comprueba si los datos compartidos contienen texto.

La propiedad shareOperation.data contiene un objeto DataPackageView. En esencia, este objeto es una versión de solo lectura del objeto DataPackage que la aplicación de origen usó para crear los datos. Usa este objeto para ver si el contenido que se va a compartir está disponible en formato de texto.

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

Es recomendable comprobar si DataPackage contiene el formato de datos que te interesa, aunque tu aplicación admita solo un formato. Esto facilita la compatibilidad posterior con otros formatos de datos.

Paso 7: Procesa el texto.

Para obtener el texto, llama al 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;
});

Por supuesto, lo que haces con el texto depende de tu aplicación.

Paso 8: Llama a reportCompleted.

Una vez que la aplicación termina de compartir el contenido correctamente, llama a reportCompleted. Después de llamar a este método, el sistema descarta tu aplicación.

shareOperation.reportCompleted();

Observaciones

Consulta el código de la Muestra de una aplicación de destino de contenido compartido para ver la experiencia completa de una aplicación que recibe texto como parte de un uso compartido.

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

Temas relacionados

Muestra de una aplicación de destino de contenido compartido

Uso compartido e intercambio de datos

Cómo recibir archivos

Cómo recibir HTML

Cómo recibir un vínculo

Inicio rápido: recepción de contenido compartido

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Directrices para depurar aplicaciones de destino