Rozwój systemu Windows 10 - umowa udostępniania

W tym rozdziale dowiemy się, jak udostępniać dane między aplikacjami. Użytkownicy często napotykają informacje, którymi chętnie się z kimś dzielą lub używają ich w innej aplikacji. W dzisiejszych czasach użytkownicy chcą używać technologii do łączenia się i udostępniania innym osobom.

Użytkownik może chcieć udostępnić -

  • Link do ich sieci społecznościowej
  • Skopiuj zdjęcie do raportu
  • Prześlij plik do magazynu w chmurze

Dzisiejsze aplikacje muszą zapewniać, że dane, których używają, są również dostępne dla użytkowników do udostępniania i wymiany. Udostępnij to lekka funkcja, którą można łatwo dodać do aplikacji UWP. Aplikacje mogą wymieniać dane z innymi aplikacjami na kilka sposobów.

W aplikacjach UWP funkcja udostępniania może być obsługiwana na następujące sposoby;

  • Po pierwsze, aplikacja może być aplikacją źródłową, która dostarcza treści, które użytkownik chce udostępnić.

  • Po drugie, aplikacja może być aplikacją docelową, którą użytkownik wybiera jako miejsce docelowe dla udostępnianych treści.

  • Aplikacja może być również aplikacją źródłową i docelową.

Udostępnianie treści

Udostępnianie treści z aplikacji będącej aplikacją źródłową jest bardzo proste. Aby wykonać jakąkolwiek operację udostępniania, będziesz potrzebowaćDataPackageobiekt klasy. Ten obiekt zawiera dane, które użytkownik chce udostępnić.

W programie mogą być zawarte następujące typy treści DataPackage obiekt -

  • Zwykły tekst
  • Jednolite identyfikatory zasobów (URI)
  • HTML
  • Sformatowany tekst
  • Bitmaps
  • Files
  • Dane zdefiniowane przez programistę

Udostępniając dane, możesz dołączyć jeden lub więcej z wyżej wymienionych formatów. Aby wspierać udostępnianie w swojej aplikacji, musisz najpierw pobrać wystąpienieDataTransferManager klasa.

Następnie zarejestruje procedurę obsługi zdarzeń, która jest wywoływana za każdym razem, gdy plik DataRequested zdarzenie.

DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView(); 
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, 
   DataRequestedEventArgs>(this.ShareTextHandler);

Gdy Twoja aplikacja otrzyma plik DataRequest obiekt, aplikacja jest gotowa do dodania treści, którą użytkownik chce udostępnić.

private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e){
   DataRequest request = e.Request;
	
   // The Title is mandatory 
   request.Data.Properties.Title = "Share Text Example"; 
   request.Data.Properties.Description = "A demonstration that shows how to share text."; 
   request.Data.SetText("Hello World!"); 
}

Każda zawartość, którą udostępnia aplikacja, musi zawierać dwie właściwości -

  • Właściwość tytułu, która jest obowiązkowa i musi zostać ustawiona.
  • Sama treść.

Otrzymywanie udostępnionych treści

Jeśli chcesz, aby Twoja aplikacja mogła otrzymywać udostępniane treści, pierwszą rzeczą, którą musisz zrobić, jest zadeklarowanie, że obsługuje ona Share Contract. Po zgłoszeniu system umożliwi udostępnienie Twojej aplikacji treści.

Aby dodać obsługę umowy akcji -

  • Kliknij dwukrotnie plik package.appmanifest plik.

  • Przejdź do Declarationspatka. WybieraćShare Target z Available Declarations listy i kliknij Add przycisk.

  • Jeśli chcesz, aby aplikacja otrzymywała dowolny rodzaj pliku jako zawartość współdzieloną, możesz określić typy plików i formaty danych.

  • Aby określić obsługiwane formaty danych, przejdź do Data Formats sekcji Declarations stronę i kliknij Add New.

  • Wpisz nazwę obsługiwanego formatu danych. Na przykład,"Text".

  • Aby określić obsługiwany typ pliku, w Supported File Types sekcja Declarations kliknij Add New.

  • Wpisz rozszerzenie nazwy pliku, które chcesz obsługiwać, np. .pdf

  • Jeśli chcesz wesprzeć All file typy, sprawdź SupportsAnyFileType pudełko.

  • Gdy użytkownik wybierze aplikację jako docelową do udostępniania danych OnShareTargetActivated zdarzenie jest uruchamiane.

  • Twoja aplikacja musi obsłużyć to zdarzenie, aby przetworzyć dane, które użytkownik chce udostępnić.

protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { 
   // Code to handle activation goes here.  
}
  • Wszystkie dane, które użytkownik chce udostępnić dowolnej aplikacji, znajdują się w pliku ShareOperationobiekt. Możesz także sprawdzić format zawartych w nim danych.

Poniżej podano fragment kodu, który obsługuje shared content w formacie zwykłego tekstu.

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; 
}

Przyjrzyjmy się prostemu przykładowi, tworząc nowy projekt UWP, który będzie udostępniał łącze internetowe.

Poniżej podano kod XAML, w którym jest tworzony przycisk z niektórymi właściwościami.

<Page 
   x:Class = "UWPSharingDemo.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "using:UWPSharingDemo" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d">
   
   <Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
	
      <StackPanel Orientation = "Vertical"> 
         <TextBlock Text = "Share Web Link" Style = "{StaticResource 
            HeaderTextBlockStyle}" Margin = "30"></TextBlock> 
				
         <Button Content = "Invoke share contract" Margin = "10"
            Name = "InvokeShareContractButton" Click = "InvokeShareContractButton_Click"
            ></Button> 
      </StackPanel>
		
   </Grid> 
	
</Page>

Kod C #, w którym zaimplementowano zdarzenie kliknięcia przycisku, a kod udostępniania identyfikatora URI podano poniżej.

using System; 

using Windows.ApplicationModel.DataTransfer; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls;  

// The Blank Page item template is documented at 
   http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409  
	
namespace UWPSharingDemo {
 
   /// <summary> 
      /// An empty page that can be used on its own or navigated to within a Frame. 
   /// </summary> 
	
   public sealed partial class MainPage : Page {
    
      DataTransferManager dataTransferManager;
		
      public MainPage() {
         this.InitializeComponent(); 
         dataTransferManager = DataTransferManager.GetForCurrentView();  
         dataTransferManager.DataRequested += dataTransferManager_DataRequested; 
      }
		
      void dataTransferManager_DataRequested(DataTransferManager sender,
         DataRequestedEventArgs args) { 
            Uri sharedWebLink = new Uri("https://msdn.microsoft.com");
				
            if (sharedWebLink != null) {
               DataPackage dataPackage = args.Request.Data; 
               dataPackage.Properties.Title = "Sharing MSDN link"; 
				
               dataPackage.Properties.Description = "The Microsoft Developer Network (MSDN)
                  is designed to help developers write applications using Microsoft 
                  products and technologies.";
					
               dataPackage.SetWebLink(sharedWebLink); 
            } 
      }
		
      private void InvokeShareContractButton_Click(object sender, RoutedEventArgs e) {
         DataTransferManager.ShowShareUI(); 
      }
		
   } 
}

Kiedy powyższy kod zostanie skompilowany i wykonany, zobaczysz następującą stronę na emulatorze.

Po kliknięciu przycisku pojawi się opcja udostępniania w której aplikacji.

Kliknij wiadomość, a pojawi się następujące okno, z którego możesz wysłać link do każdego.