Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie Inhalte in Ihrer UWP-App (Universelle Windows-Plattform) empfangen, die von einer anderen App über den Freigabevertrag geteilt wurde. Dieser Freigabevertrag ermöglicht es, dass Ihre App als Option angezeigt wird, wenn der Benutzer die Freigabefunktion aufruft.
Hinweis
Die Codebeispiele in diesem Artikel stammen aus UWP-Apps. Desktop-Apps sollten den IDataTransferManagerInterop verwenden. Weitere Informationen und Codebeispiele finden Sie unter Anzeigen von WinRT-UI-Objekten, die von CoreWindow abhängen.
Weitere Informationen zum Freigeben von Daten in Desktop-Apps finden Sie auch im WPF-Beispiel für die Inhaltsquellen-App und zum Integrieren von Freigabeoptionen in Ihrer Windows-App .
Deklarieren Sie Ihre App als Freigabeziel
Das System zeigt eine Liste möglicher Ziel-Apps an, wenn ein Benutzer "Freigeben" aufruft. Um in der Liste angezeigt zu werden, muss Ihre App angeben, dass sie den Freigabevertrag unterstützt. Dadurch wird dem System mitgeteilt, dass Ihre App für den Empfang von Inhalten verfügbar ist.
- Öffnen Sie die Manifestdatei. Es sollte etwas wie package.appxmanifestgenannt werden.
- Öffnen Sie die Registerkarte Deklarationen.
- Wählen Sie Zielfreigabe aus der Liste Verfügbare Deklarationen, und wählen Sie dann Hinzufügenaus.
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, wie Text, HTML und Bitmap. Sie können auch benutzerdefinierte Dateitypen und Datenformate angeben. Wenn Sie das tun, denken Sie daran, dass Quell-Apps verstehen müssen, welche diese Typen und Formate sind; andernfalls können diese Apps die Formate nicht verwenden, um Daten freizugeben.
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:
- Öffnen Sie die Manifestdatei. Es sollte etwas wie package.appxmanifestgenannt werden.
- Wählen Sie im Abschnitt Unterstützte Dateitypen der Seite DeklarationenNeu hinzufügenaus.
- 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:
- Öffnen Sie die Manifestdatei.
- Öffnen Sie den Abschnitt Datenformate der Seite Deklarationen, und wählen Sie dann Hinzufügen neueraus.
- Geben Sie den Namen des unterstützten Datenformats ein, z. B. "Text".
Freigabeaktivierung verwalten
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();
Nachdem Sie ReportStarted-aufgerufen haben, erwarten Sie keine weitere Benutzerinteraktion mit Ihrer App. Daher sollten Sie es nicht aufrufen, es sei denn, Ihre App befindet sich in einem Zustand, in 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 erhalten hat. 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 Nutzer wird die Meldung sehen, wenn er den Status der Freigabe kontrolliert. Zu diesem Zeitpunkt wird Ihre App heruntergefahren und die Freigabe beendet. Der Benutzer muss erneut beginnen, um den Inhalt an Ihre App zu übermitteln. Je nach Ihrem Szenario können Sie entscheiden, dass ein bestimmter Fehler nicht schwerwiegend genug ist, um den Freigabevorgang zu beenden. In diesem Fall haben Sie die Möglichkeit, ReportError nicht aufzurufen und mit dem Freigabevorgang fortzufahren.
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
Zurückgeben eines QuickLinks, wenn die Freigabe erfolgreich war
Wenn ein Benutzer Ihre App zum Empfangen von Inhalten auswählt, empfiehlt es sich, eine QuickLink-zu erstellen. Ein QuickLink ist wie eine Verknüpfung, die es Benutzern erleichtert, Informationen mit Ihrer App zu teilen. Sie können beispielsweise einen QuickLink erstellen, der eine neue E-Mail-Nachricht öffnet, die bereits 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 an Mama") und das Symbol werden angezeigt, wenn der Benutzer auf den Teilen-Charme tippt. Die ID verwendet Ihre App für den Zugriff auf benutzerdefinierte Informationen, z. B. eine E-Mail-Adresse oder Anmeldeinformationen. Wenn Ihre App eine QuickLink-erstellt, gibt die App den QuickLink- an das System zurück, indem ReportCompleted-aufgerufen wird.
Ein QuickLink speichert tatsächlich keine Daten. Stattdessen enthält sie einen Bezeichner, der bei Auswahl an Ihre App gesendet wird. Ihre App ist für die Speicherung der ID des QuickLink und der entsprechenden Benutzerdaten verantwortlich. Wenn der Benutzer auf die QuickLink-tippt, können Sie die 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);
}