Freigeben über


Integration von paketierten Apps in die Windows Share-Funktion

In diesem Artikel wird erläutert, wie Sie verpackte Apps in das Windows-Freigabefeature integrieren. Apps, die mit MSIX verpackt sind, verfügen über paketidentität und können als Freigabeziel registriert werden. Mit dem Feature "Freigeben" können Benutzer Inhalte aus einer App in eine andere freigeben. Eine verpackte App wird als Freigabeziel registriert, um freigegebene Dateien innerhalb der App zu empfangen und zu verarbeiten.

Was ist die "Share Target"-Funktion?

"Share Target ist ein Feature, das in Windows 8 eingeführt wurde und es einer App erlaubt, Daten von einer anderen App zu empfangen." Zielfreigabe funktioniert wie eine Zwischenablage, jedoch mit dynamischen Inhalten.

Damit die Standardfreigabezielregistrierung mit Win32-Apps funktioniert, muss die App über eine Paketidentität verfügen und auch die Freigabeargumente als ShareTargetActivatedEventArgs behandeln, bei dem es sich um ein Liveobjekt aus der Quell-App handelt. Es handelt sich nicht um einen statischen Speicherinhalt, der an die Ziel-App gesendet wird.

Hinweis

Verwenden Sie in einer C++-App die GetCurrentPackageFullName-API , um zu überprüfen, ob die ausgeführte App die Paketidentität aufweist. Die API gibt den APPMODEL_ERROR_NO_PACKAGE Fehlercode zurück, wenn er nicht mit der Paketidentität ausgeführt wird.

Voraussetzungen

Zur Unterstützung ShareTargetActivatedEventArgsmuss die App auf Windows 10, Version 2004 (Build 10.0.19041.0) oder höher ausgerichtet sein. Dies ist die Mindestzielversion für das Feature.

Registrieren als Zielfreigabe

Es sind zwei Schritte erforderlich, um den Freigabe-Vertrag in Ihrer App zu implementieren.

Hinzufügen einer Zielfreigabeerweiterung zu appxmanifest

Öffnen Sie im Projektmappen-Explorer die package.appxmanifest-Datei des Paketerstellungsprojekts in deiner Projektmappe, und füge diese Freigabezielerweiterung hinzu.

<Extensions>
      <uap:Extension
          Category="windows.shareTarget">
        <uap:ShareTarget>
          <uap:SupportedFileTypes>
            <uap:SupportsAnyFileType />
          </uap:SupportedFileTypes>
          <uap:DataFormat>Bitmap</uap:DataFormat>
        </uap:ShareTarget>
      </uap:Extension>
</Extensions>

Fügen Sie das unterstützte Datenformat hinzu, das von Ihrer Anwendung zur DataFormat Konfiguration unterstützt wird. In diesem Fall unterstützt die App das Freigeben von Bildern, sodass DataFormat auf Bitmap festgelegt wird.

Abrufen von Argumenten für das Freigabeereignis

Ab Windows 10, Version 1809, können verpackte Apps die AppInstance.GetActivatedEventArgs-Methode aufrufen, um bestimmte Arten von App-Aktivierungsinformationen während des Starts abzurufen. Sie können diese Methode beispielsweise aufrufen, um Informationen zur App-Aktivierung abzurufen; ob diese durch das Öffnen einer Datei, das Klicken auf eine interaktive Benachrichtigung oder die Verwendung eines registrierten Protokolls ausgelöst wurde.

ShareTargetActivatedEventArgs-Aktivierungsinformationen werden jedoch nur unter Windows 10, Version 2004 und höher unterstützt. Daher sollte die Anwendung auf Geräte mit dieser spezifischen Mindestversion abzielen.

Eine Windows App SDK-Implementierung finden Sie unter der OnLaunched Methode in der Share Target-Beispiel-App.

Überprüfen Sie bei anderen verpackten Apps in der Main-Methode der Anwendung auf AppInstance.GetActivatedEventArgs.

public static void Main(string[] cmdArgs)
{
    ...
    if (isRunningWithIdentity())
    {
        var activationArgs = AppInstance.GetActivatedEventArgs();
        if (activationArgs != null)
        {
            switch (activationArgs.Kind)
            {
                case ActivationKind.Launch:
                    HandleLaunch(activationArgs as LaunchActivatedEventArgs);
                    break;
                case ActivationKind.ToastNotification:
                    HandleToastNotification(activationArgs as ToastNotificationActivatedEventArgs);                                     
                    break;
                case ActivationKind.ShareTarget:
                    HandleShareAsync(activationArgs as ShareTargetActivatedEventArgs);
                    break;
                default:
                    HandleLaunch(null);
                    break;
            }
        }
    }
}

Eine vollständige Implementierung finden Sie in der Photo Store-Demo-App .

Freigegebene Dateien verwalten

Der folgende Codeschnipsel zeigt, wie freigegebene Dateien in einer verpackten App behandelt werden. Der Codeausschnitt ist Teil der HandleShareAsync Methode, die aufgerufen wird, wenn die App im vorherigen Beispiel als Freigabeziel aktiviert wird.

static async void HandleShareAsync(ShareTargetActivatedEventArgs args)
{
    ShareOperation shareOperation = args.ShareOperation;
    shareOperation.ReportStarted();

    if (shareOperation.Data.Contains( 
        Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
    {
        try
        {
            IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
            var file = (IStorageFile)items[0]; 
            string path = file.Path;
            var image = new ImageFile(path);
            image.AddToCache();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    shareOperation.ReportCompleted();

    // app launch code
}

Siehe auch