Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kontrakt udostępniania w systemie Windows umożliwia Twojej aplikacji wyświetlanie się w panelu udostępniania systemu Windows jako aplikacja docelowa — dzięki czemu użytkownicy mogą udostępniać zawartość z innych aplikacji bezpośrednio do Twojej aplikacji. W tym artykule wyjaśniono, jak obsługiwać udostępnioną zawartość, gdy aplikacja zostanie aktywowana jako obiekt docelowy udostępniania.
Przed wykonaniem poniższych kroków zarejestruj aplikację jako cel udostępniania:
- Spakowane aplikacje: zobacz Integrowanie spakowanych aplikacji z Windows Share w celu rejestracji manifestu i konfiguracji aktywacji.
- Aplikacje bez pakietu: Zobacz Integracja aplikacji bez pakietu z funkcją Windows Share, aby dowiedzieć się, jak nadać tożsamość pakietu i zarejestrować się jako element docelowy udostępniania.
Note
Model aktywacji dla aplikacji klasycznych WinUI 3 różni się od platformy UWP. W systemie WinUI 3 aktywacja funkcji udostępniania jest obsługiwana za pomocą AppInstance.GetActivatedEventArgs() w kodzie uruchamiania aplikacji — a nie za pomocą Application.OnShareTargetActivated(). Interfejsy API ShareOperation i DataPackageView opisane w tym artykule działają w ten sam sposób po uzyskaniu ShareTargetActivatedEventArgs. Zobacz Integrowanie spakowanych aplikacji z funkcją Udostępnianie w systemie Windows, aby poznać wzorzec aktywacji Zestaw SDK do aplikacji systemu Windows.
Wybieranie formatów danych do obsługi
Gdy deklarujesz aplikację jako cel udostępniania w manifeście pakietu, określasz, jakie typy plików i formaty danych aplikacja może przyjmować. W arkuszu udziałów są wyświetlane tylko aplikacje, które obsługują udostępniane formaty.
Obsługiwane typy można skonfigurować na dwa sposoby:
Za pomocą edytora manifestu Visual Studio:
- Otwórz
package.appxmanifestw Visual Studio. - Wybierz kartę Deklaracje .
- Wybierz pozycję Udostępnij element docelowy z listy Dostępne deklaracje , a następnie wybierz pozycję Dodaj.
- W sekcji Obsługiwane typy plików dodaj rozszerzenia plików obsługiwanych przez aplikację (na przykład
.jpg,.png). Wybierz pozycję SupportsAnyFileType ,aby zaakceptować wszystkie typy plików. - W sekcji Formaty danych dodaj nazwy formatów obsługiwanych przez aplikację (na przykład
Text,Uri,Bitmap).
Bezpośrednio w pliku 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>
Zarejestruj tylko formaty, które aplikacja może obsłużyć. Jeśli zadeklarujesz format, ale nie możesz go przetworzyć, ucierpią na tym wrażenia użytkownika.
Odczytywanie udostępnionych danych
Gdy aplikacja zostanie aktywowana jako cel udostępniania, otrzymujesz obiekt ShareOperation za pośrednictwem elementu ShareTargetActivatedEventArgs. Jego Data właściwość to DataPackageView , która uwidacznia udostępnioną zawartość.
Użyj polecenia Contains, aby sprawdzić, które formaty są dostępne, a następnie wywołaj odpowiednią metodę asynchroniczną, aby pobrać dane:
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.
}
Stan udostępniania raportu
Jeśli przetwarzanie udostępnionych danych zajmuje trochę czasu — na przykład przekazywanie plików na serwer — zgłoś postęp do systemu przy użyciu metod stanu ShareOperation . Dzięki temu system odpowiednio zarządza cyklem życia aplikacji źródłowej.
Wywołuj te metody po kolei, w miarę postępu operacji udostępniania:
| Metoda | Kiedy należy zadzwonić |
|---|---|
| RaportRozpoczęty | Gdy tylko aplikacja zacznie przetwarzać udostępnione treści. Od tego momentu nie należy oczekiwać dalszej interakcji użytkownika z interfejsem udostępniania. |
| ReportDataRetrieved | Po uzyskaniu przez aplikację wszystkich potrzebnych danych z pliku DataPackageView. Dzięki temu system może zawiesić lub zakończyć działanie aplikacji źródłowej. |
| ReportSubmittedBackgroundTask | Jeśli aplikacja nadal przetwarza w tle po zamknięciu interfejsu udostępniania. |
| RaportZakończony | Po pomyślnym zakończeniu przetwarzania zawartości udostępnionej przez aplikację. |
| RaportBłąd | Jeśli wystąpi poważny błąd. Użytkownik widzi komunikat i kończy operację udostępniania. |
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
Wywołaj ReportError tylko w przypadku błędów na tyle poważnych, aby przerwać operację udostępniania. W przypadku błędów możliwych do odzyskania można kontynuować przetwarzanie bez wywoływania metody ReportError.
Note
Istnieją przypadki, w których aplikacja docelowa może wywołać metodę ReportDataRetrieved przed ReportStarted— na przykład jeśli aplikacja pobiera dane w ramach obsługi aktywacji, ale wywołuje je później tylko ReportStarted wtedy, gdy użytkownik jawnie wybierze przycisk Udostępnij .
Zwracanie szybkiego łącza
Gdy użytkownik udostępnia zawartość aplikacji, możesz wrócić do funkcji QuickLink , aby przyspieszyć udostępnianie w przyszłości.
QuickLink pojawia się jako skrót w panelu udostępniania — na przykład jako skrót do kontaktu, który umożliwia użytkownikowi szybkie ponowne udostępnienie temu kontaktowi bez przechodzenia przez interfejs aplikacji.
Element QuickLink ma tytuł, ikonę i identyfikator. Identyfikator to wewnętrzny identyfikator aplikacji przypisany do skrótu — na przykład ID kontaktu lub nazwa konta. Gdy użytkownik później wybierze łącze QuickLink, system aktywuje aplikację i przekazuje z powrotem identyfikator QuickLink za pośrednictwem ShareOperation.QuickLinkId.
Zwróć obiekt QuickLink, przekazując go do 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
Element QuickLink przechowuje tylko identyfikator — a nie skojarzone dane. Aplikacja odpowiada za przechowywanie wszelkich danych użytkownika (takich jak dane kontaktowe) oraz ich pobieranie, gdy QuickLink zostanie aktywowany za pomocą ShareOperation.QuickLinkId.
Zobacz także
- Udostępnianie zawartości z aplikacji Windows
- Zintegruj pakietowe aplikacje z Windows Share
- Integracja nierozpakowanych aplikacji z Windows Share
- Implementacja kontraktu udostępniania dla zestawu SDK aplikacji systemu Windows
- ShareOperation
- DataPackageView
- Szybki link
- Dokumentacja schematu ShareTarget