Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak odbierać zawartość w aplikacji platformy uniwersalnej systemu Windows (UWP) udostępnionej z innej aplikacji przy użyciu kontraktu udostępniania. Ten kontrakt udostępniania pozwala, aby aplikacja była przedstawiana jako opcja, gdy użytkownik przywołuje funkcję udostępniania.
Uwaga / Notatka
Przykłady kodu w tym artykule pochodzą z aplikacji UWP. Aplikacje desktopowe powinny używać IDataTransferManagerInterop. Aby uzyskać więcej informacji i przykłady kodu, zobacz Wyświetlanie obiektów interfejsu użytkownika WinRT, które zależą od coreWindow.
Aby uzyskać dodatkowe informacje na temat udostępniania danych w aplikacjach desktopowych, możesz również zapoznać się z przykładową aplikacją WPF Sharing i Integracją opcji udostępniania w aplikacji systemu Windows.
Deklarowanie aplikacji jako celu udostępniania
System wyświetla listę możliwych aplikacji docelowych, gdy użytkownik wywołuje usługę Share. Aby wyświetlić się na liście, aplikacja musi zadeklarować, że obsługuje kontrakt udostępniania. Dzięki temu system będzie wiedział, że aplikacja jest dostępna do odbierania zawartości.
- Otwórz plik manifestu. Powinien mieć nazwę podobną do package.appxmanifest.
- Otwórz kartę o nazwie Deklaracje .
- Wybierz Udostępnij cel z listy Dostępne deklaracje, a następnie wybierz Dodaj.
Wybieranie typów i formatów plików
Następnie zdecyduj, jakie typy plików i formaty danych obsługujesz. Interfejsy API udostępniania obsługują kilka standardowych formatów, takich jak Tekst, HTML i Mapa bitowa. Można również określić niestandardowe typy plików i formaty danych. Jeśli to zrobisz, pamiętaj, że aplikacje źródłowe muszą wiedzieć, jakie są te typy i formaty; w przeciwnym razie te aplikacje nie mogą używać formatów do udostępniania danych.
Zarejestruj tylko formaty, które aplikacja może obsłużyć. Wyświetlane są tylko aplikacje docelowe, które obsługują udostępniane dane, gdy użytkownik wywołuje usługę Share.
Aby ustawić typy plików:
- Otwórz plik manifestu. Powinien mieć nazwę podobną do package.appxmanifest.
- W sekcji Obsługiwane typy plików na stronie Deklaracje wybierz opcję Dodaj nowy.
- Wpisz rozszerzenie nazwy pliku, które chcesz obsługiwać, na przykład ".docx". Musisz uwzględnić kropkę. Jeśli chcesz obsługiwać wszystkie typy plików, zaznacz pole wyboru SupportsAnyFileType .
Aby ustawić formaty danych:
- Otwórz plik manifestu.
- Otwórz sekcję formatów danych na stronie deklaracji, a następnie wybierz opcję Dodaj nowy.
- Wpisz nazwę obsługiwanego formatu danych, na przykład "Tekst".
Obsługa aktywacji udziału
Gdy użytkownik wybierze Twoją aplikację (zazwyczaj wybierając ją z listy dostępnych aplikacji docelowych w interfejsie udostępniania), wywołane zostanie zdarzenie OnShareTargetActivated. Aplikacja musi obsługiwać to zdarzenie, aby przetwarzać dane, które użytkownik chce udostępnić.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
// Code to handle activation goes here.
}
Dane, które użytkownik chce udostępnić, znajdują się w obiekcie ShareOperation . Tego obiektu można użyć do sprawdzenia formatu zawartych w nim danych.
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;
}
Stan udostępniania raportu
W niektórych przypadkach aplikacji może zająć trochę czasu przetworzenie danych, które chce udostępnić. Przykłady obejmują użytkowników, którzy udostępniają kolekcje plików lub obrazów. Te elementy są większe niż prosty ciąg tekstowy, więc przetwarzanie trwa dłużej.
shareOperation.ReportStarted();
Po wywołaniu metody ReportStarted nie oczekuj więcej interakcji użytkownika z aplikacją. W związku z tym nie należy go wywoływać, chyba że aplikacja znajduje się na etapie, w którym może zostać zamknięta przez użytkownika.
W przypadku udziału rozszerzonego możliwe jest, że użytkownik może odrzucić aplikację źródłową, zanim aplikacja będzie zawierać wszystkie dane z obiektu DataPackage. W związku z tym zalecamy, aby poinformować system o tym, kiedy aplikacja uzyskała potrzebne dane. W ten sposób system może w razie potrzeby zawiesić lub zakończyć aplikację źródłową.
shareOperation.ReportSubmittedBackgroundTask();
Jeśli coś pójdzie nie tak, wywołaj metodę ReportError , aby wysłać komunikat o błędzie do systemu. Użytkownik zobaczy komunikat po sprawdzeniu stanu udziału. W tym momencie aplikacja zostanie zamknięta, a udział zostanie zakończony. Użytkownik będzie musiał uruchomić ponownie, aby udostępnić zawartość aplikacji. W zależności od scenariusza możesz zdecydować, że określony błąd nie jest na tyle poważny, aby przerwać operację udostępniania. W takim przypadku możesz zrezygnować z wywołania ReportError i możesz kontynuować udostępnianie.
shareOperation.ReportError("Could not reach the server! Try again later.");
Na koniec, gdy aplikacja pomyślnie przetworzyła udostępnioną zawartość, należy wywołać metodę ReportCompleted , aby poinformować system.
shareOperation.ReportCompleted();
Gdy używasz tych metod, zwykle wywołujesz je w podanej kolejności i nie wywołujesz ich więcej niż raz. Jednak czasami aplikacja docelowa może wywołać ReportDataRetrieved przed ReportStarted. Na przykład aplikacja może pobrać dane w ramach zadania w procedurze obsługi aktywacji, ale nie wywołuje ReportStarted, dopóki użytkownik nie wybierze przycisku Udostępnij.
Zwracanie funkcji QuickLink, jeśli udostępnianie zakończyło się pomyślnie
Kiedy użytkownik wybiera Twoją aplikację do odbierania treści, zalecamy utworzenie QuickLink. QuickLink przypomina skrót, który ułatwia użytkownikom udostępnianie informacji w Twojej aplikacji. Możesz na przykład utworzyć quicklink , który otwiera nową wiadomość e-mail wstępnie skonfigurowaną przy użyciu adresu e-mail znajomego.
QuickLink musi mieć tytuł, ikonę i identyfikator. Tytuł (na przykład "E-mail mama") i ikona pojawiają się, gdy użytkownik stuknie pasek Udostępnij. Identyfikator jest używany przez aplikację do uzyskiwania dostępu do dowolnych informacji niestandardowych, takich jak adres e-mail lub poświadczenia logowania. Gdy aplikacja tworzy QuickLink, aplikacja zwraca QuickLink do systemu przez wywołanie ReportCompleted.
Funkcja QuickLink nie przechowuje danych. Zamiast tego zawiera identyfikator, który po wybraniu jest wysyłany do aplikacji. Aplikacja jest odpowiedzialna za przechowywanie Identyfikatora QuickLink oraz odpowiadających mu danych użytkowników. Gdy użytkownik stuknie QuickLink, możesz uzyskać jego Id za pośrednictwem właściwości 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);
}