So wird’s gemacht: Empfangen von Text (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Text ist vielleicht das häufigste Datenformat, das Benutzer freigeben. Es eignet sich nicht nur für Inhalte am besten (wie Statusupdates). Dieses Format empfiehlt sich auch für Apps, in denen Links, HTML und andere Informationen geteilt werden.

Sie sollten im Normalfall das Freigeben von Text unterstützen, wenn Sie eine Ziel-App schreiben. Dadurch stellen Sie sicher, dass sich Benutzer in möglichst vielen Situationen für die App entscheiden können. Allerdings sollten Sie Text nicht unterstützen, wenn Sie glauben, dass das den Benutzer verwirren könnte. Wenn die App z. B. vorwiegend Dateien behandelt, wäre eine Textdarstellung dieser Dateien nicht sonderlich hilfreich für die Benutzer.

Wissenswertes

Technologien

Voraussetzungen

  • Sie sollten mit Visual Studio und den zugehörigen Vorlagen vertraut sein.
  • Sie sollten mit JavaScript vertraut sein.

Anweisungen

Schritt 1: Unterstützung des Freigabe-Vertrags

Bevor die App freigegebene Inhalte empfangen kann, müssen Sie deklarieren, dass sie den Zielfreigabe-Vertrag unterstützt. Dieser Vertrag informiert das System darüber, dass die App für den Empfang von Inhalten verfügbar ist. Wenn Sie die App mithilfe einer Microsoft Visual Studio-Vorlage erstellen, gehen Sie wie folgt vor, um den Freigabe-Vertrag zu unterstützen:

  1. Öffnen Sie die Manifestdatei (package.appxmanifest).
  2. Öffnen Sie die Registerkarte Deklarationen.
  3. Wählen Sie in der Liste Verfügbare Deklarationen die Option Zielfreigabe aus.
  4. Klicken Sie auf Hinzufügen, um die Unterstützung für den Zielfreigabe-Vertrag in Ihrer App hinzuzufügen.

Schritt 2: Angeben, dass die App Text unterstützt

Wenn Sie die Ziel-App schreiben, können Sie die Dateitypen und die Formate angeben. Gehen Sie wie folgt vor, um die unterstützten Dateitypen anzugeben:

  1. Öffnen Sie die Manifestdatei.
  2. Klicken Sie im Abschnitt Unterstützte Dateitypen auf Neu hinzufügen.
  3. Geben Sie .txt ein. Sie müssen den Punkt (.) vor "txt" angeben, nicht dahinter.

So geben Sie an, dass Text als Datenformat unterstützt wird:

  1. Öffnen Sie die Manifestdatei.
  2. Klicken Sie im Abschnitt Datenformate auf Neu hinzufügen.
  3. Geben Sie "text" ein (ohne die Anführungszeichen).

Mit den vorhergehenden Schritten fügen Sie dem Manifest den folgenden Abschnitt hinzu:

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

Hinweis  Sie können einen anderen Einstiegspunkt angeben, wenn die App für den Zielfreigabe-Vertrag aktiviert ist. Ändern Sie dazu im Paketmanifest unter der Deklaration Zielfreigabe im Einstellungsabschnitt App den Seiteneintrag Start. Wir raten dringend dazu, außerdem eine gesonderte JavaScript-Datei zu verwenden, die die Aktivierung für diese Seite behandelt. Sehen Sie sich dazu das Beispiel zur Ziel-App für die Inhaltsfreigabe an.

 

Schritt 3: Hinzufügen eines Ereignishandlers zum Erkennen der App-Aktivierung

Wenn ein Benutzer Ihre App zum Freigeben von Inhalten verwendet, aktiviert das System die App. Da dies auf viele unterschiedliche Arten geschehen kann, müssen Sie Code hinzufügen, der erkennt, weshalb die Aktivierung stattgefunden hat. Überprüfen Sie dazu den Wert der kind-Eigenschaft.

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) {
        ...
    }
};

Schritt 4: Abrufen des ShareOperation-Objekts

Das ShareOperation-Objekt enthält alle Daten, die die App zum Abrufen der Inhalte benötigt, die der Benutzer freigeben möchte.

shareOperation = args.detail.shareOperation;

Schritt 5: Schnelle Rückgabe für aktivierten Ereignishandler

Der activated-Ereignishandler muss schnell zurückgegeben werden. Fügen Sie ein asynchrones Ereignis für den activated-Ereignishandler in die Warteschlange ein, damit die Freigabedaten nach Rückgabe des aktivierten Ereignisses verarbeitet werden.

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

Mit den verbleibenden Schritten wird die shareReady-Funktion implementiert.

Schritt 6: Überprüfung auf Textinhalte in den Freigabedaten

Die shareOperation.data-Eigenschaft enthält ein DataPackageView-Objekt. Dieses Objekt ist im Grunde eine schreibgeschützte Version des DataPackage-Objekts, das von der Quell-App zum Erstellen der Daten verwendet wurde. Stellen Sie mit diesem Objekt fest, ob der freigegebene Inhalt im Textformat verfügbar ist.

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

Auch wenn die App nur ein Format unterstützt, ist es empfehlenswert zu überprüfen, ob DataPackage das gewünschte Datenformat enthält. Dies erleichtert Ihnen die Arbeit, wenn Sie später andere Datenformate unterstützen möchten.

Schritt 7: Verarbeiten des Texts

Rufen Sie zum Abrufen des Texts die DataPackageView.getText-Methode auf.

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

Was Sie mit dem Text machen, hängt natürlich von der App ab.

Schritt 8: Aufrufen von "reportCompleted"

Rufen Sie reportCompleted auf, wenn die App die Inhalte freigegebenen hat. Nachdem Sie diese Methode aufgerufen haben, schließt das System Ihre App.

shareOperation.reportCompleted();

Anmerkungen

Das Beispiel zur Ziel-App für die Inhaltsfreigabe veranschaulicht Code für den gesamten End-to-End-Vorgang für eine App, die bei einer Freigabe Text empfängt.

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

Verwandte Themen

Beispiel zur Ziel-App für die Inhaltsfreigabe

Freigeben und Austauschen von Daten

So wird's gemacht: Empfangen von Dateien

So wird's gemacht: Empfangen von HTML

So wird's gemacht: Empfangen eines Links

Schnellstart: Empfangen von geteilten Inhalten

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Richtlinien zum Debuggen von Ziel-Apps