Tìm hiểu học cách chia sẻ dữ liệu giữa các ứng dụng. Người dùng thường bắt gặp thông tin mà họ hào hứng chia sẻ với ai đó hoặc sử dụng nó trong một ứng dụng khác. Ngày nay, người dùng muốn sử dụng công nghệ để kết nối và chia sẻ với những người khác.

Người dùng có thể muốn chia sẻ

  • Một liên kết với mạng xã hội của họ
  • Sao chép ảnh vào báo cáo
  • Tải tệp lên bộ nhớ đám mây

Các ứng dụng ngày nay, cần đảm bảo rằng dữ liệu mà chúng sử dụng cũng luôn sẵn sàng để người dùng chia sẻ và trao đổi. Chia sẻ là một tính năng nhẹ, dễ dàng thêm vào ứng dụng UWP của bạn. Có một số cách để ứng dụng trao đổi dữ liệu với các ứng dụng khác.

Trong các ứng dụng UWP, tính năng chia sẻ có thể được hỗ trợ theo những cách sau;

  • Đầu tiên, ứng dụng có thể là một ứng dụng nguồn cung cấp nội dung mà người dùng muốn chia sẻ.
  • Thứ hai, ứng dụng có thể là một ứng dụng đích mà người dùng chọn làm điểm đến cho nội dung được chia sẻ.
  • Một ứng dụng cũng có thể vừa là ứng dụng nguồn vừa là ứng dụng đích.

Chia sẻ nội dung

Chia sẻ nội dung từ một ứng dụng, là một ứng dụng nguồn rất đơn giản. Để thực hiện bất kỳ thao tác chia sẻ nào, bạn sẽ cần đối tượng lớp DataPackage . Đối tượng này chứa dữ liệu mà người dùng muốn chia sẻ.

Các loại nội dung sau có thể được bao gồm trong đối tượng DataPackage :

  • Văn bản thô
  • Số nhận dạng tài nguyên đồng nhất (URI)
  • HTML
  • Văn bản được định dạng
  • Bản đồ bit
  • Các tập tin
  • Dữ liệu do nhà phát triển xác định

Trong khi chia sẻ dữ liệu, bạn có thể bao gồm một hoặc nhiều định dạng được đề cập ở trên. Để hỗ trợ chia sẻ trong ứng dụng của bạn, trước tiên bạn cần lấy phiên bản của lớp DataTransferManager . Sau đó, nó sẽ đăng ký một trình xử lý sự kiện được gọi bất cứ khi nào một sự kiện DataRequested xảy ra.

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

Khi ứng dụng của bạn nhận được đối tượng DataRequest thì ứng dụng của bạn đã sẵn sàng thêm nội dung mà người dùng muốn chia sẻ.

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!"); 
}

Bất kỳ nội dung nào mà ứng dụng của bạn chia sẻ, phải chứa hai thuộc tính:

  • Thuộc tính Title, là thuộc tính bắt buộc và phải được đặt.
  • Nội dung chính nó.

Nhận nội dung được chia sẻ

Nếu bạn muốn ứng dụng của mình có thể nhận được nội dung được chia sẻ thì điều đầu tiên bạn cần làm là tuyên bố rằng nó hỗ trợ Hợp đồng chia sẻ . Sau khi khai báo, hệ thống sẽ cho ứng dụng của bạn sẵn sàng tiếp nhận nội dung.

Để thêm hỗ trợ của Hợp đồng Cổ phần –

  • Nhấp đúp vào tệp package.appmanifest .

Tới các khai báo tab. Chọn Chia sẻ Mục tiêu từ danh sách Khai báo Có sẵn và nhấp vào nút Thêm

 Sharing Contract
  • Nếu bạn muốn ứng dụng của mình nhận bất kỳ loại tệp nào dưới dạng nội dung được chia sẻ, thì bạn có thể chỉ định các loại tệp và định dạng dữ liệu.
  • Để chỉ định Định dạng Dữ liệu mà bạn hỗ trợ, hãy chuyển đến phần Định dạng Dữ liệu , của trang Khai báo và bấm Thêm Mới .
  • Nhập tên của định dạng dữ liệu bạn hỗ trợ. Ví dụ: “Văn bản” .
  • Để chỉ định loại tệp mà bạn hỗ trợ, trong phần Loại tệp được hỗ trợ của trang Khai báo, hãy bấm Thêm mới .
  • Nhập phần mở rộng tên tệp mà bạn muốn hỗ trợ, ví dụ: .pdf

Nếu bạn muốn hỗ trợ Tất cả các loại tệp , hãy chọn hộp SupportsAnyFileType .

 Sharing Contract
  • Khi người dùng chọn ứng dụng của bạn làm ứng dụng đích để chia sẻ dữ liệu thì sự kiện OnShareTargetActiised sẽ được kích hoạt.
  • Ứng dụng của bạn cần xử lý sự kiện này để xử lý dữ liệu mà người dùng muốn chia sẻ.
protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { 
   // Code to handle activation goes here.  
}
  • Tất cả dữ liệu mà người dùng muốn chia sẻ với bất kỳ ứng dụng nào đều được chứa trong một đối tượng ShareOperation . Bạn cũng có thể kiểm tra định dạng của dữ liệu mà nó chứa.

Dưới đây là đoạn mã xử lý nội dung được chia sẻ ở định dạng văn bản thuần túy

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; 

Chúng ta hãy xem một ví dụ đơn giản bằng cách tạo một dự án UWP mới, dự án này sẽ chia sẻ một liên kết web. Dưới đây là mã XAML trong đó một nút được tạo với một số thuộc tính.

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

Mã C # trong đó sự kiện nhấp vào nút được triển khai và mã chia sẻ URI được đưa ra bên dưới.

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

Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy trang sau trên trình giả lập.

 Sharing Contract

Khi nhấp vào nút, nó sẽ đưa ra các tùy chọn để chia sẻ trên ứng dụng nào.

 Sharing Contract

Nhấp vào nhắn tin và cửa sổ sau sẽ được hiển thị, từ đó bạn có thể gửi liên kết đến bất kỳ ai.

 Sharing Contract

Để lại một bình luận