Programowanie .NET

Archive for the tag “Sharing”

Sharing

Sharing jest charms umożliwiającym udostępnianie danych z własnej aplikacji do innej. Funkcja ta jest dostępna po wysunięciu się prawego paska pomocy (Win + C). Dzięki tej funkcji możliwa jest komunikacja pomiędzy aplikacjami i przesyłanie pomiędzy mini danych jak.

  • tekst
  • linki
  • zdjęcia
  • pliki
  • zawartość w formie HTML
  • lub własna struktura

Jak widać mamy durze pole do popisu oczywiście możemy łączyć ze sobą przesyłane dane np.: tekst i zdjęcie itd.. W przypadku ostatniej możliwości czyli własna struktura aplikacja docelowa również musi obsługiwać tą strukturę danych. Jest to dobra forma jeśli mamy kilka swoich programów i chcemy przesyłać pomiędzy nimi dane tak aby tylko nasze aplikacje mogły te informacje odczytywać.

Ok to tyle jeśli chodzi i wstęp. Zacznijmy pisać kod który umożliwi nam udostępnianie informacji.

Po pierwsze musimy dodać przestrzeń nazw.

using Windows.ApplicationModel.DataTransfer;

 

Ta przestrzeń zapewni nam dostęp do DataTransferManager’s w którym rejestrujemy obsługę zdarzenia DataRequested.

private static TypedEventHandler<DataTransferManager, DataRequestedEventArgs> _handler;
if (_handler != null)
DataTransferManager.GetForCurrentView().DataRequested -= _handler;

_handler = new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(OnDataRequested);
DataTransferManager.GetForCurrentView().DataRequested += _handler;

 

Trzeba pamiętać iż DataTransferManager może w danym momencie przechowywać tylko na jedną obsługę zdarzenia DataRequested. Przez co trzeba pilnować aby zwalniać starą obsługę nim podepnie się nową. Potrzebujemy jeszcze metody w której nastąpi przygotowanie paczki do wysyłki.

void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
var request = args.Request;
request.Data.Properties.Title = _item.Title;
request.Data.Properties.Description = „Recipe ingredients and directions”;

// Share recipe text
StringBuilder builder = new StringBuilder();
builder.Append(„INGREDIENTS\r\n”);

foreach (string ingredient in _item.Ingredients)
{
builder.Append(ingredient);
builder.Append(„\r\n”);
}

builder.Append(„\r\nDIRECTIONS\r\n”);
builder.Append(_item.Directions);

request.Data.SetText(builder.ToString());

// Share recipe image
string url = _item.GetImageUri();
if (!url.StartsWith(http://&#8221;))
url = „ms-appx:///” + url;

var uri = new Uri(url);
var reference = RandomAccessStreamReference.CreateFromUri(uri);
request.Data.Properties.Thumbnail = reference;
var deferral = request.GetDeferral();
request.Data.SetBitmap(reference);
deferral.Complete();
}

 

Z argumentu wyciągamy obiekt zapytania (Request). Teraz zaczynamy operować na tym obiekcie zapytania. Aby się dostać do właściwości przechowujących informacje należy odwołać się do Data.Properties obiektu request. Właściwość Data zwraca obiekt DataPackage który jest przesyłany pomiędzy aplikacjami. Natomiast Properties służy do ustawiania jego właściwości. Kolejne instrukcje tworzą składniki przepisu, sposób wykonania i dodają obrazek. Kod ten pochodzi z aplikacji Contoso Cookbook. Listę aplikacji cel które zobaczymy po wybraniu Sharing zależy od tego jakie typy danych wysyłamy np.: inne będą listy aplikacji dla samego tekstu i tekstu ze zdjęciem.

A tak wygląda efekt

image
Lista aplikacji do których można wysłać informacje

image
A tu już przesłane dane i przetworzone przez aplikację cel.

Post Navigation