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 přijímat obsah v aplikaci univerzální platformy Windows (UPW) sdílené z jiné aplikace pomocí kontraktu Sdílet. Tento kontrakt sdílení umožňuje, aby se aplikace zobrazovala jako možnost, když uživatel vyvolá sdílení.
Deklarujte svou aplikaci jako cíl pro sdílení
Systém zobrazí seznam možných cílových aplikací, když uživatel vyvolá sdílení. Aby se vaše aplikace mohla zobrazit v seznamu, musí deklarovat, že podporuje kontrakt sdílet. To systému dá vědět, že vaše aplikace je k dispozici pro příjem obsahu.
- Otevřete soubor manifestu. Měla by se jmenovat něco jako package.appxmanifest.
- Otevřete kartu Deklarace.
- V seznamu dostupných deklarací zvolte Sdílený cíl a pak vyberte Přidat.
Volba typů a formátů souborů
Dále rozhodněte, jaké typy souborů a datové formáty podporujete. Rozhraní API pro sdílení podporují několik standardních formátů, například Text, HTML a Bitmap. Můžete také zadat vlastní typy souborů a datové formáty. Pokud ano, mějte na paměti, že zdrojové aplikace musí vědět, jaké jsou tyto typy a formáty; jinak tyto aplikace nemůžou používat formáty ke sdílení dat.
Zaregistrujte se jenom u formátů, které vaše aplikace dokáže zpracovat. Zobrazí se jenom cílové aplikace, které podporují sdílená data, když uživatel vyvolá sdílenou složku.
Nastavení typů souborů:
- Otevřete soubor manifestu. Měla by se jmenovat něco jako package.appxmanifest.
- V části Podporované typy souborů na stránce Deklarace vyberte Přidat novou položku.
- Zadejte příponu názvu souboru, kterou chcete podporovat, například ".docx." Musíte zahrnout období. Pokud chcete podporovat všechny typy souborů, zaškrtněte políčko SupportsAnyFileType .
Nastavení datových formátů:
- Otevřete soubor manifestu.
- Otevřete oddíl Formáty dat na stránce Deklarace, a poté vyberte Přidat nový.
- Zadejte název formátu dat, který podporujete, například Text.
Zpracovat aktivaci sdílení
Když uživatel vybere vaši aplikaci (obvykle ji vybere ze seznamu dostupných cílových aplikací v uživatelském rozhraní pro sdílení), vyvolá se událost OnShareTargetActivated . Vaše aplikace musí tuto událost zpracovat, aby zpracovávala data, která chce uživatel sdílet.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
// Code to handle activation goes here.
}
Data, která chce uživatel sdílet, jsou obsažena v objektu ShareOperation . Tento objekt můžete použít ke kontrole formátu dat, která obsahuje.
ShareOperation shareOperation = args.ShareOperation;
if (shareOperation.Data.Contains(StandardDataFormats.Text))
{
string text = await shareOperation.Data.GetTextAsync();
// To output the text from this example, you need a TextBlock control
// with a name of "sharedContent".
sharedContent.Text = "Text: " + text;
}
Hlášení stavu sdílení
V některých případech může trvat, než vaše aplikace zpracuje data, která chce sdílet. Mezi příklady patří uživatelé sdílející kolekce souborů nebo obrázků. Tyto položky jsou větší než jednoduchý textový řetězec, takže zpracování trvá déle.
shareOperation.ReportStarted();
Po volání ReportStarted neočekávejte žádnou další interakci uživatele s vaší aplikací. V důsledku toho byste ji neměli volat, pokud není aplikace v okamžiku, kdy ji uživatel může zavřít.
S rozšířenou sdílenou složkou je možné, že uživatel může zavřít zdrojovou aplikaci předtím, než bude mít vaše aplikace všechna data z objektu DataPackage. V důsledku toho doporučujeme, abyste systému dali vědět, kdy vaše aplikace získala data, která potřebuje. Tímto způsobem může systém podle potřeby pozastavit nebo ukončit zdrojovou aplikaci.
shareOperation.ReportSubmittedBackgroundTask();
Pokud se něco nepovede, zavolejte ReportError pro odeslání chybové zprávy do systému. Když uživatel zkontroluje stav sdílené složky, zobrazí se mu zpráva. V tomto okamžiku je vaše aplikace vypnutá a sdílená složka skončila. Uživatel bude muset začít znovu, aby sdílel obsah do vaší aplikace. V závislosti na vašem scénáři se můžete rozhodnout, že konkrétní chyba není dostatečně závažná k ukončení operace sdílení. V takovém případě se můžete rozhodnout, že nebudete volat ReportError a budete pokračovat ve sdílení.
shareOperation.ReportError("Could not reach the server! Try again later.");
Nakonec, jakmile aplikace úspěšně zpracuje sdílený obsah, měli byste zavolat ReportCompleted, aby systém dostal informaci.
shareOperation.ReportCompleted();
Při použití těchto metod je obvykle voláte v pořadí, které je právě popsáno, a nevoláte je více než jednou. Existují však časy, kdy cílová aplikace může volat ReportDataRetrieved před ReportStarted. Aplikace může například načíst data jako součást úlohy v obslužné rutině aktivace, ale ne volat ReportStarted , dokud uživatel nevybere tlačítko Sdílet .
Pokud sdílení proběhlo úspěšně, vraťte rychlý odkaz.
Když uživatel vybere aplikaci pro příjem obsahu, doporučujeme vytvořit rychlý odkaz. Rychlý odkaz je jako zkratka, která uživatelům usnadňuje sdílení informací s vaší aplikací. Můžete například vytvořit rychlý odkaz , který otevře novou e-mailovou zprávu předem nakonfigurovanou s e-mailovou adresou přítele.
Rychlý odkaz musí mít název, ikonu a ID. Název (třeba "Poslat mámu e-mailem") a ikona se zobrazí, když uživatel klepne na ovládací tlačítko Sdílet. ID je to, co vaše aplikace používá pro přístup k jakýmkoli vlastním informacím, jako je e-mailová adresa nebo přihlašovací údaje. Když aplikace vytvoří QuickLink, aplikace vrátí QuickLink systému voláním ReportCompleted.
Rychlý odkaz ve skutečnosti neukládá data. Místo toho obsahuje identifikátor, který se po výběru odešle do vaší aplikace. Vaše aplikace zodpovídá za ukládání ID rychlého odkazu a odpovídajících uživatelských dat. Když uživatel klepne na rychlý odkaz QuickLink, můžete jeho ID získat prostřednictvím vlastnosti QuickLinkId.
async void ReportCompleted(ShareOperation shareOperation, string quickLinkId, string quickLinkTitle)
{
QuickLink quickLinkInfo = new QuickLink
{
Id = quickLinkId,
Title = quickLinkTitle,
// For quicklinks, the supported FileTypes and DataFormats are set
// independently from the manifest
SupportedFileTypes = { "*" },
SupportedDataFormats = { StandardDataFormats.Text, StandardDataFormats.Uri,
StandardDataFormats.Bitmap, StandardDataFormats.StorageItems }
};
StorageFile iconFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFileAsync(
"assets\\user.png", CreationCollisionOption.OpenIfExists);
quickLinkInfo.Thumbnail = RandomAccessStreamReference.CreateFromFile(iconFile);
shareOperation.ReportCompleted(quickLinkInfo);
}