Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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é
- Přehled nasazení sady Windows App SDK
- Vytvoření prvního projektu WinUI
- Migrace z UWP na sadu Windows App SDK
- Výhody a nevýhody balení aplikace – přehled nasazení
- Identita, registrace a aktivace nebalené aplikace Win32
- Implementace kontraktů pro Windows App SDK
- Implementace smlouvy pro aplikace sdílené s externím umístěním
- Získání aktivačních informací pro balíčkové aplikace
- Referenční informace ke schématu ShareTarget
Windows developer