Delen via


Verpakte apps integreren met Windows Share

In dit artikel wordt uitgelegd hoe u verpakte apps integreert met de functie Windows Share . Apps die zijn verpakt met MSIX hebben pakketidentiteit en zijn klaar om te registreren als sharedoel. Met de functie Delen kunnen gebruikers inhoud van de ene app naar de andere delen. Een verpakte app wordt geregistreerd als sharedoel om gedeelde bestanden in de app te ontvangen en te verwerken.

Wat is de functie "Share Target"?

Share Target is een functie die is geïntroduceerd in Windows 8 en waarmee een app gegevens van een andere app kan ontvangen. Share Target werkt als een Klembord, maar met dynamische inhoud.

De standaard share-doelregistratie werkt alleen met Win32-apps als de app een pakketidentiteit heeft en ook de shareargumenten afhandelt als ShareTargetActivatedEventArgs, een live-object uit de bron-app. Het is geen statische geheugeninhoud die naar de doel-app wordt verzonden.

Opmerking

Gebruik in een C++-app de GetCurrentPackageFullName-API om te controleren of de actieve app pakketidentiteit heeft. De API retourneert de APPMODEL_ERROR_NO_PACKAGE foutcode als deze niet wordt uitgevoerd met pakketidentiteit.

Vereiste voorwaarden

Ter ondersteuning ShareTargetActivatedEventArgsmoet de app gericht zijn op Windows 10, versie 2004 (build 10.0.19041.0) of hoger. Dit is de minimale beoogde versie voor de functie.

Registreren als een Share-doelwit

Er zijn twee stappen vereist voor het implementeren van het Share-contract in uw app.

Een sharedoelextensie toevoegen aan appxmanifest

Open in Solution Explorer van Visual Studio het package.appxmanifest bestand van het packaging-project in uw oplossing en voeg de doelextensie voor delen toe.

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

Voeg de ondersteunde gegevensindeling toe die door uw toepassing wordt ondersteund aan de DataFormat configuratie. In dit geval ondersteunt de app het delen van afbeeldingen, dus wordt de DataFormat ingesteld op Bitmap.

Argumenten voor deelgebeurtenissen ophalen

Vanaf Windows 10 versie 1809 kunnen verpakte apps de methode AppInstance.GetActivatedEventArgs aanroepen om bepaalde soorten app-activeringsgegevens op te halen tijdens het opstarten. U kunt deze methode bijvoorbeeld aanroepen om informatie over app-activering op te halen, of deze nu is geactiveerd door een bestand te openen, te klikken op een interactieve melding of door een geregistreerd protocol te gebruiken.

ShareTargetActivatedEventArgs-activeringsgegevens worden echter alleen ondersteund in Windows 10, versie 2004 en hoger. De toepassing moet zich dus richten op apparaten met deze specifieke minimale versie.

Zie de methode in de OnLaunchedvoorbeeld-app Share Target voor een implementatie van de Windows App SDK.

Voor andere verpakte apps, in de Main methode van de toepassing, controleert u op 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;
            }
        }
    }
}

Bekijk de Photo Store Demo-app voor een volledige implementatie.

Gedeelde bestanden verwerken

In het volgende codefragment ziet u hoe u gedeelde bestanden in een verpakte app verwerkt. Het codefragment maakt deel uit van de HandleShareAsync methode die wordt aangeroepen wanneer de app wordt geactiveerd als een sharedoel in het vorige voorbeeld.

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
}

Zie ook