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.
Kontrakt Share systému Windows umožňuje vaší aplikaci zobrazit se na panelu Sdílet ve Windows jako cílová aplikace – takže uživatelé můžou sdílet obsah z jiných aplikací přímo do vaší aplikace. Tento článek vysvětluje, jak zpracovat sdílený obsah po aktivaci aplikace jako cíle sdílení.
Než budete postupovat podle těchto kroků, zaregistrujte aplikaci jako cíl sdílení:
- Zabalené aplikace: Informace o registraci manifestu a nastavení aktivace najdete v tématu Integrace zabalených aplikací se službou Windows Share.
- Aplikace bez balíčku: Informace o tom, jak udělit identitu balíčku a zaregistrovat se jako cíl sdílení, najdete v tématu Integrace aplikací bez balíčku se sdílením ve Windows.
Note
Aktivační model desktopových aplikací WinUI 3 se liší od UPW. Ve WinUI 3 se aktivace sdílení zpracovává prostřednictvím AppInstance.GetActivatedEventArgs() spouštěcího kódu aplikace , ne prostřednictvím Application.OnShareTargetActivated().
ShareOperation Rozhraní API DataPackageView, popsaná v tomto článku, fungují po získání ShareTargetActivatedEventArgs stejným způsobem. Informace o způsobu aktivace Windows App SDK najdete v tématu Integrace zabalených aplikací se službou Windows Share.
Zvolte formáty dat, které chcete podporovat.
Když v manifestu balíčku deklarujete aplikaci jako cíl sdílené složky, určíte, které typy souborů a datové formáty může aplikace přijímat. V listu Sdílet se zobrazí jenom aplikace, které podporují sdílené formáty.
Podporované typy můžete nakonfigurovat dvěma způsoby:
Pomocí editoru manifestu Visual Studio:
- Otevřete
package.appxmanifestv Visual Studio. - Vyberte kartu Deklarace .
- V seznamu Dostupných deklarací zvolte Sdílet cíl a pak vyberte Přidat.
- V části Podporované typy souborů přidejte přípony souborů,
.jpgkteré vaše aplikace zpracovává (například ,.png). Chcete-li přijmout všechny typy souborů, vyberte SupportsAnyFileType . - V části Formáty dat přidejte názvy formátů, které aplikace zpracovává (například
Text,Uri,Bitmap).
Přímo v souboru XML manifestu:
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Text</uap:DataFormat>
<uap:DataFormat>Uri</uap:DataFormat>
<uap:DataFormat>Bitmap</uap:DataFormat>
<uap:DataFormat>StorageItems</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Zaregistrujte se jenom u formátů, které vaše aplikace dokáže zpracovat. Pokud deklarujete formát, ale nemůžete ho zpracovat, uživatelské prostředí bude trpět.
Čtení sdílených dat
Když je vaše aplikace aktivována jako cíl sdílení, obdržíte objekt ShareOperation prostřednictvím ShareTargetActivatedEventArgs. Jeho Data vlastnost je DataPackageView , která zveřejňuje sdílený obsah.
Použijte Contains ke zkontrolování, které formáty jsou k dispozici, a poté zavolejte příslušnou asynchronní metodu k načtení dat:
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text))
{
string text = await shareOperation.Data.GetTextAsync();
// Process the shared text.
}
if (shareOperation.Data.Contains(StandardDataFormats.WebLink))
{
Uri webLink = await shareOperation.Data.GetWebLinkAsync();
// Process the shared link.
}
if (shareOperation.Data.Contains(StandardDataFormats.StorageItems))
{
IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
// Process the shared files or folders.
}
Hlášení stavu sdílení
Pokud zpracování sdílených dat nějakou dobu trvá , například nahrávání souborů na server, hlásí průběh do systému pomocí metod stavu ShareOperation . To umožňuje systému správně spravovat životní cyklus zdrojové aplikace.
Tyto metody volejte postupně v průběhu operace sdílení:
| Metoda | Kdy zavolat |
|---|---|
| ReportStarted | Jakmile vaše aplikace začne zpracovávat sdílený obsah. Od tohoto okamžiku nepředpokládejte žádnou další interakci uživatele s uživatelským rozhraním pro sdílení. |
| ZprávaDataNačtena | Jakmile vaše aplikace získá všechna data, která potřebuje, z DataPackageView. To umožňuje systému pozastavit nebo ukončit zdrojovou aplikaci. |
| ReportSubmittedBackgroundTask | Pokud vaše aplikace pokračuje ve zpracování na pozadí po zavření uživatelského rozhraní pro sdílení. |
| |
Když vaše aplikace úspěšně dokončí zpracování sdíleného obsahu. |
| Chyba reportu | Pokud dojde k závažné chybě. Uživatel uvidí zprávu a operace sdílení skončí. |
shareOperation.ReportStarted();
try
{
string text = await shareOperation.Data.GetTextAsync();
shareOperation.ReportDataRetrieved();
// Perform any additional processing here...
await ProcessSharedDataAsync(text);
shareOperation.ReportCompleted();
}
catch (Exception)
{
shareOperation.ReportError("Something went wrong. Please try again.");
}
Note
ReportError volejte pouze při chybách natolik závažných, že ukončí operaci sdílení. V případě obnovitelných chyb můžete pokračovat ve zpracování bez volání ReportError.
Note
Existují případy, kdy může cílová aplikace volat ReportDataRetrieved dříve ReportStarted– například pokud vaše aplikace načítá data jako součást zpracování aktivace, ale zavolá ReportStarted později, až uživatel explicitně vybere tlačítko Sdílet .
Vrácení rychlého odkazu
Když uživatel sdílí obsah ve vaší aplikaci, můžete vrátit QuickLink, aby bylo budoucí sdílení rychlejší. V panelu sdílení se QuickLink zobrazí jako zástupce – například jako zástupce kontaktu, který uživateli umožní rychle znovu s tímto kontaktem sdílet obsah, aniž by musel procházet uživatelským rozhraním vaší aplikace.
A QuickLink má název, ikonu a ID. ID je interní identifikátor zkratky ve vaší aplikaci, například ID kontaktu nebo název účtu. Když uživatel později vybere QuickLink, systém aktivuje vaši aplikaci a předá QuickLink ID zpět prostřednictvím ShareOperation.QuickLinkId.
Vraťte QuickLink jeho předáním metodě ReportCompleted:
private async Task ReportCompletedWithQuickLink(
ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
QuickLink quickLinkInfo = new QuickLink
{
Id = quickLinkId,
Title = quickLinkTitle,
// QuickLink supported types are configured independently from the manifest.
SupportedFileTypes = { "*" },
SupportedDataFormats =
{
StandardDataFormats.Text,
StandardDataFormats.WebLink,
StandardDataFormats.Bitmap,
StandardDataFormats.StorageItems
}
};
StorageFile iconFile = await Windows.ApplicationModel.Package.Current
.InstalledLocation.CreateFileAsync(
"assets\\contact.png", CreationCollisionOption.OpenIfExists);
quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
shareOperation.ReportCompleted(quickLinkInfo);
}
Note
A QuickLink ukládá pouze ID, nikoli přidružená data. Vaše aplikace zodpovídá za zachování jakýchkoli uživatelských dat (například kontaktních údajů) a jejich načítání při aktivaci QuickLink prostřednictvím ShareOperation.QuickLinkId.
Viz také
Windows developer