Comment recevoir du texte (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Le texte est probablement le format de données que les utilisateurs partagent le plus. Ce format est le plus utilisé pour le contenu tel que les mises à jour d’état, mais sa prise en charge est également recommandée dans les applications destinées à partager des liens, du contenu HTML et d’autres informations.

Lors de la création d’une application cible, vous devez généralement prendre en charge le texte dans le cadre du partage. Ainsi, vous assurez à votre application l’accès au plus grand nombre d’utilisateurs. Cela étant dit, n’ajoutez pas de prise en charge du texte si vous pensez que cela risque d’induire en erreur les utilisateurs. Par exemple, si votre application traite principalement des fichiers, une représentation de ces fichiers au format texte ne répondra pas aux attentes des utilisateurs.

Ce que vous devez savoir

Technologies

Prérequis

  • Vous devez être familiarisé avec Visual Studio et ses modèles connexes.
  • Vous devez être familiarisé avec JavaScript.

Instructions

Étape 1: prendre en charge le contrat de partage

Avant que votre application puisse recevoir un contenu partagé, vous devez déclarer qu’elle prend en charge le contrat de partage. Ce contrat indique au système que votre application est apte à recevoir des contenus. Si vous utilisez un modèle Microsoft Visual Studio pour créer votre application, voici comment prendre en charge le contrat de partage :

  1. Ouvrez le fichier manifeste (package.appxmanifest).
  2. Ouvrez l’onglet Déclarations.
  3. Choisissez Partage cible dans la liste Déclarations disponibles.
  4. Cliquez sur Ajouter pour ajouter la prise en charge du contrat de partage cible dans votre application.

Étape 2: indiquer que votre application prend en charge le texte

Lorsque vous créez une application cible, vous pouvez indiquer à la fois les types de fichiers et les formats de données à prendre en charge. Pour indiquer les types de fichiers que vous prenez en charge :

  1. Ouvrez le fichier manifeste.
  2. Dans la section Types de fichiers pris en charge, cliquez sur Ajouter nouveau.
  3. Tapez .txt. Vous devez inclure le point (.) avant l’extension « txt », mais pas le point final.

Pour indiquer que vous prenez en charge le format de données texte :

  1. Ouvrez le fichier manifeste.
  2. Dans la section Formats de données, cliquez sur Ajouter.
  3. Tapez "texte" (sans les guillemets).

Les étapes précédentes ajoutent la section suivante au manifeste :

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

Remarque  Vous pouvez spécifier un autre point d’entrée lorsque votre application est activée pour le contrat de partage cible. Pour ce faire, modifiez l’entrée de page Démarrage dans la section des paramètres Application de la déclaration Partage cible du manifeste du package. Nous vous recommandons d’utiliser également un fichier JavaScript distinct qui gère l’activation pour cette page. Par exemple, consultez l’Exemple de partage de contenu cible entre applications.

 

Étape 3: ajouter un gestionnaire d’événements pour savoir à quel moment votre application est activée

Quand un utilisateur sélectionne votre application pour partager du contenu, le système active votre application. Étant donné que cela peut se produire de différentes façons, vous devez ajouter un code qui détecte la raison de l’activation de l’application. Pour ce faire, vérifiez la valeur de la propriété 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) {
        ...
    }
};

Étape 4: Obtenez l’objet ShareOperation.

L’objet ShareOperation contient toutes les données dont votre application a besoin pour obtenir le contenu qu’un utilisateur souhaite partager.

shareOperation = args.detail.shareOperation;

Étape 5: retourner rapidement du gestionnaire d’événements activé.

Le gestionnaire d’événements activated doit retourner rapidement. Mettez en file d’attente un événement asynchrone provenant du gestionnaire d’événements activated pour que le traitement des données de partage ait lieu après le retour de l’événement activé.

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

Les étapes restantes servent à implémenter la fonction shareReady.

Étape 6: vérifier si les données de partage contiennent du texte.

La propriété shareOperation.data contient un objet DataPackageView. En essence, cet objet est une version en lecture seule de l’objet DataPackage que l’application source a utilisé pour créer les données. Utilisez cet objet pour voir si le contenu partagé est disponible dans un format texte.

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

Vérifier que le DataPackage contient le format de données qui vous intéresse est une pratique recommandée, même si votre application ne prend en charge qu’un seul format. Cela facilite la prise en charge d’autres formats de fichiers ultérieurement.

Étape 7: traiter le texte

Pour obtenir le texte, appelez la méthode 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;
});

Bien entendu, les opérations appliquées au texte dépendent de votre application.

Étape 8: Appelez reportCompleted.

Lorsque votre application a terminé de partager le contenu, appelez la méthode reportCompleted. Quand vous avez appelé cette méthode, le système masque votre application.

shareOperation.reportCompleted();

Remarques

Consultez notre exemple de code Exemple de partage de contenu cible entre applications pour observer l’intégralité de l’expérience d’une application recevant du texte dans un contexte de partage.

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

Rubriques associées

Exemple de partage de contenu cible entre applications

Partage et échange de données

Comment recevoir des fichiers

Comment recevoir du contenu HTML

Comment recevoir un lien

Démarrage rapide : réception de contenu partagé

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Recommandations pour le débogage des applications cibles