Sdílet prostřednictvím


Integrace zabalených aplikací se službou Windows Share

Tento článek vysvětluje, jak integrovat zabalené aplikace s funkcí Windows Share . Aplikace, které jsou zabaleny pomocí MSIX, mají identitu balíčku a jsou připravené k registraci jako cílová aplikace pro sdílení. Funkce Sdílet umožňuje uživatelům sdílet obsah z jedné aplikace do druhé. Zabalená aplikace se zaregistruje jako cíl sdílení, aby mohla přijímat a zpracovávat sdílené soubory v aplikaci.

Co je Cíl sdílení?

Sdílecí cíl je funkce, která byla představena ve Windows 8 a umožňuje aplikaci přijímat data z jiné aplikace. Sdílený cíl funguje jako schránka pro kopírování, ale s dynamickým obsahem.

Aby registrace výchozího cílového místa pro sdílení fungovala s aplikacemi Win32, aplikace musí mít identitu balíčku a také zpracovat argumenty sdílení jako ShareTargetActivatedEventArgs, což je živý objekt ze zdrojové aplikace. Nejedná se o statický obsah paměti odesílaný do cílové aplikace.

Poznámka:

V aplikaci C++ pomocí rozhraní API GetCurrentPackageFullName zkontrolujte, jestli má spuštěná aplikace identitu balíčku. Rozhraní API vrátí APPMODEL_ERROR_NO_PACKAGE kód chyby, pokud není spuštěno s identitou balíčku.

Požadavky

Pro podporu ShareTargetActivatedEventArgsmusí aplikace cílit na Windows 10 verze 2004 (build 10.0.19041.0) nebo novější. Toto je minimální cílová verze funkce.

Registrace jako cílová aplikace pro sdílení

K implementaci kontraktu Pro sdílení ve vaší aplikaci jsou potřeba dva kroky.

Přidání cílového rozšíření pro sdílení do appxmanifestu

V Průzkumníku řešení sady Visual Studio otevřete package.appxmanifest soubor projektu balení ve vašem řešení a přidejte rozšíření cílového sdílení.

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

Přidejte do konfigurace podporovaný formát dat, který vaše aplikace DataFormat podporuje. V tomto případě aplikace podporuje sdílení obrázků, takže je nastavená DataFormat na Bitmap.

Načtení argumentů události sdílení

Počínaje Windows 10 verze 1809 mohou zabalené aplikace volat metodu AppInstance.GetActivatedEventArgs , která během spuštění načte určité druhy aktivačních informací o aplikaci. Můžete například volat tuto metodu pro získání informací o aktivaci aplikace; jestli se aktivovala otevřením souboru, kliknutím na interaktivní oznámení nebo použitím registrovaného protokolu.

Informace o aktivaci ShareTargetActivatedEventArgs se ale podporují jenom v systémech Windows 10, verze 2004 a novějších. Aplikace by proto měla cílit na zařízení s touto konkrétní minimální verzí.

Pokud chcete zobrazit implementaci sady Windows App SDK, podívejte se na metodu OnLaunched v ukázkové aplikaci Share Target.

V případě jiných balených aplikací v metodě Main aplikace vyhledejte 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;
            }
        }
    }
}

Kompletní implementaci najdete v ukázkové aplikaci Photo Store .

Zpracování sdílených souborů

Následující fragment kódu ukazuje, jak zpracovávat sdílené soubory v zabalené aplikaci. Fragment kódu je součástí HandleShareAsync metody, která se volá při aktivaci aplikace jako cíl sdílení v předchozím příkladu.

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
}

Viz také