Freigeben über


Empfangen von Daten

In diesem Artikel wird erläutert, wie Sie Inhalte in Ihrer Universelle Windows-Plattform (UWP)-App empfangen, die von einer anderen App mithilfe des Freigabevertrags freigegeben wurde. Mit diesem Freigabe-Vertrag kann Ihre App als Option angezeigt werden, wenn der Benutzer „Freigeben“ aufruft.

Deklarieren Ihrer App als Freigabeziel

Das System zeigt eine Liste möglicher Ziel-Apps an, wenn ein Benutzer "Freigeben" aufruft. Damit sie in der Liste angezeigt werden kann, muss Ihre App deklarieren, dass sie den Freigabe-Vertrag unterstützt. Dadurch wird dem System mitgeteilt, dass Ihre App für den Empfang von Inhalten verfügbar ist.

  1. Öffnen Sie die Manifestdatei. Es sollte etwas wie "package.appxmanifest" genannt werden.
  2. Öffnen Sie die Registerkarte "Deklarationen ".
  3. Wählen Sie "Ziel freigeben" aus der Liste "Verfügbare Deklarationen" und dann "Hinzufügen" aus.

Auswählen von Dateitypen und -formaten

Entscheiden Sie als Nächstes, welche Dateitypen und Datenformate Sie unterstützen. Die Freigabe-APIs unterstützen mehrere Standardformate, z. B. Text, HTML und Bitmap. Sie können auch benutzerdefinierte Dateitypen und Datenformate angeben. Denken Sie daran, dass Quell-Apps wissen müssen, was diese Typen und Formate sind. andernfalls können diese Apps die Formate nicht zum Freigeben von Daten verwenden.

Registrieren Sie sich nur für Formate, die Ihre App verarbeiten kann. Nur Ziel-Apps, die die freigegebenen Daten unterstützen, werden angezeigt, wenn der Benutzer "Freigeben" aufruft.

So legen Sie Dateitypen fest:

  1. Öffnen Sie die Manifestdatei. Es sollte etwas wie "package.appxmanifest" genannt werden.
  2. Wählen Sie im Abschnitt "Unterstützte Dateitypen " auf der Seite " Deklarationen " die Option "Neu hinzufügen" aus.
  3. Geben Sie die Dateinamenerweiterung ein, die Sie unterstützen möchten, z. B. ".docx". Sie müssen den Zeitraum einschließen. Wenn Sie alle Dateitypen unterstützen möchten, aktivieren Sie das Kontrollkästchen "SupportsAnyFileType ".

So legen Sie Datenformate fest:

  1. Öffnen Sie die Manifestdatei.
  2. Öffnen Sie den Abschnitt "Datenformate " auf der Seite "Deklarationen ", und wählen Sie dann "Neu hinzufügen" aus.
  3. Geben Sie den Namen des unterstützten Datenformats ein, z. B. "Text".

Behandeln der Freigabeaktivierung

Wenn ein Benutzer Ihre App auswählt (in der Regel durch Auswählen aus einer Liste der verfügbaren Ziel-Apps in der Freigabe-UI), wird ein OnShareTargetActivated-Ereignis ausgelöst. Ihre App muss dieses Ereignis behandeln, um die Daten zu verarbeiten, die der Benutzer freigeben möchte.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
    // Code to handle activation goes here. 
} 

Die Daten, die der Benutzer freigeben möchte, sind in einem ShareOperation-Objekt enthalten. Sie können dieses Objekt verwenden, um das Format der darin enthaltenen Daten zu überprüfen.

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

Freigabestatus melden

In einigen Fällen kann es zeitlang dauern, bis Ihre App die Daten verarbeitet, die sie freigeben möchte. Beispiele sind Benutzer, die Sammlungen von Dateien oder Bildern freigeben. Diese Elemente sind größer als eine einfache Textzeichenfolge, daher dauert die Verarbeitung länger.

shareOperation.ReportStarted(); 

Nach dem Aufrufen von ReportStarted erwarten Sie keine weitere Benutzerinteraktion mit Ihrer App. Daher sollten Sie sie nicht aufrufen, es sei denn, Ihre App befindet sich an einem Punkt, an dem sie vom Benutzer geschlossen werden kann.

Bei einer erweiterten Freigabe ist es möglich, dass der Benutzer die Quell-App schließen kann, bevor ihre App alle Daten aus dem DataPackage-Objekt enthält. Daher wird empfohlen, das System darüber zu informieren, wann Ihre App die benötigten Daten erworben hat. Auf diese Weise kann das System die Quell-App bei Bedarf anhalten oder beenden.

shareOperation.ReportSubmittedBackgroundTask(); 

Wenn ein Fehler auftritt, rufen Sie ReportError auf, um eine Fehlermeldung an das System zu senden. Der Benutzer wird die Meldung sehen, wenn er den Status der Freigabe überprüft. Zu diesem Zeitpunkt wird Ihre App heruntergefahren und die Freigabe beendet. Der Benutzer muss erneut gestartet werden, um den Inhalt für Ihre App zu teilen. Je nach Szenario können Sie entscheiden, dass ein bestimmter Fehler nicht schwerwiegend genug ist, um den Freigabevorgang zu beenden. In diesem Fall können Sie "ReportError" nicht aufrufen und mit der Freigabe fortfahren.

shareOperation.ReportError("Could not reach the server! Try again later."); 

Wenn Ihre App den freigegebenen Inhalt erfolgreich verarbeitet hat, sollten Sie "ReportCompleted" aufrufen, um das System zu informieren.

shareOperation.ReportCompleted();

Wenn Sie diese Methoden verwenden, rufen Sie sie in der Regel in der gerade beschriebenen Reihenfolge auf, und Sie rufen sie nicht mehr als einmal auf. Es gibt jedoch Situationen, in denen eine Ziel-App ReportDataRetrieved vor ReportStarted aufrufen kann. Beispielsweise kann die App die Daten als Teil einer Aufgabe im Aktivierungshandler abrufen, aber nicht "ReportStarted" aufrufen, bis der Benutzer eine Schaltfläche "Freigeben" auswählt.

Wenn ein Benutzer Ihre App zum Empfangen von Inhalten auswählt, empfiehlt es sich, einen QuickLink zu erstellen. Ein QuickLink ist wie eine Verknüpfung, die Benutzern das Freigeben von Informationen mit Ihrer App erleichtert. Sie können beispielsweise einen QuickLink erstellen, der eine neue E-Mail-Nachricht öffnet, die mit der E-Mail-Adresse eines Freundes vorkonfiguriert ist.

Ein QuickLink muss über einen Titel, ein Symbol und eine ID verfügen. Der Titel (z. B. "E-Mail-Mutter") und das Symbol werden angezeigt, wenn der Benutzer auf den Charm "Teilen" tippt. Die ID verwendet Ihre App für den Zugriff auf benutzerdefinierte Informationen, z. B. eine E-Mail-Adresse oder Anmeldeinformationen. Wenn Ihre App einen QuickLink erstellt, gibt die App den QuickLink zum System zurück, indem Sie ReportCompleted aufrufen.

Ein QuickLink speichert keine Daten. Stattdessen enthält sie einen Bezeichner, der bei Auswahl an Ihre App gesendet wird. Ihre App ist dafür verantwortlich, die ID des QuickLinks und die entsprechenden Benutzerdaten zu speichern. Wenn der Benutzer auf den QuickLink tippt, können Sie seine ID über die QuickLinkId-Eigenschaft abrufen.

async void ReportCompleted(ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
    QuickLink quickLinkInfo = new QuickLink
    {
        Id = quickLinkId,
        Title = quickLinkTitle,

        // For quicklinks, the supported FileTypes and DataFormats are set 
        // independently from the manifest
        SupportedFileTypes = { "*" },
        SupportedDataFormats = { StandardDataFormats.Text, StandardDataFormats.Uri, 
                StandardDataFormats.Bitmap, StandardDataFormats.StorageItems }
    };

    StorageFile iconFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFileAsync(
            "assets\\user.png", CreationCollisionOption.OpenIfExists);
    quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
    shareOperation.ReportCompleted(quickLinkInfo);
}

Weitere Informationen