Windows 8 mitteilsam. DataTransferManager

Zwei Windows 8.1 Stores Apps ( METRO APP) tauschen  über Contracts Daten aus. Eine APP ist Source und eine Target. Dabei ist es natürlich egal, mit welcher Sprache C#, VB.NET, C++ oder JavaScript die Anwendung programmiert wurde. Relevanter ist schon welche Art von Information man teilen möchte. Das muss vom Typ zusammen passen. Möglich ist vieles wie Text, Bilder oder Links.

In diesem Blog Beitrag werden wir eine Anwendung beschreiben, die Ihre Daten teilt. Einfacher Text per Share Charm an eine andere Anwendung. Die Klasse  DataTransferManager liefert den Context, Methoden und Events. Da jede Page innerhalb einer APP meist etwas anderes zu sharen hat, üblicherweise im Pageload.

   1:  Dim dm As DataTransferManager
   2:  Private Sub Page_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
   3:          dm = DataTransferManager.GetForCurrentView()
   4:  End Sub

Es gibt ein spezielles Event DataRequested das ausgelöst wird, wenn per Charm vom Benutzer das Share initiiert wird. Das Event muss abonniert werden um es dann behandeln zu können. Dort werden dann die Daten zugewiesen.

   1:  AddHandler dm.DataRequested, AddressOf reqHandler

Alternativ kann der Sharing Context UI der WinRT API auch per Code angezeigt werden.

   1:  DataTransferManager.ShowShareUI

In der Ereignis Behandlung wird in den Argumenten eine Referenz auf das angeforderte Share Objekt übergeben. Eigenschaften wie Titel und Beschreibung müssen dann per VB.NET Code zugewiesen werden. Andere Methoden beziehen sich spezifisch auf den Inhalt. Wie SetBitmap, SetRtf oder SetData für HTML. Neu in Windows 8.1 sind z.B. SetWebLink oder SetApplicationLink und ersetzen damit setURI (obsolet).

   1:  Private Sub reqHandler(sender As DataTransferManager, args As DataRequestedEventArgs)
   2:     args.Request.Data.Properties.Title = "dataPackageTitle"
   3:     args.Request.Data.Properties.Description = "dataPackageDescription"
   4:     args.Request.Data.SetText("dataPackageText")
   5:  End Sub

image

Windows 8.1 erlaubt nun ein Sharing aus jeder APP. Es wird einfach der Screenshot angeboten.

Die vollständige Doku findet sich in der MSDN online.

Im folgenden VB.NET Beispiel wird ein fehlerhafter Share simuliert. Der Benutzer sieht dann beim nächsten Aufruf des Charm die Fehlermeldung. Dies wird benötigt um in der Source App den Share per Programmierlogik abbrechen zu können.

   1:  Private Sub errorHandler(sender As DataTransferManager, args As DataRequestedEventArgs)
   2:      args.Request.Data.Properties.Title = "dataPackageTitleError"
   3:      args.Request.Data.Properties.Description = "dataPackageDescriptionError"
   4:      args.Request.FailWithDisplayText("so nicht ganz boeser Fehler")
   5:  End Sub
   6:  Private Sub Button_set(sender As Object, e As RoutedEventArgs)
   7:       AddHandler dm.DataRequested, AddressOf reqHandler
   8:       DataTransferManager.ShowShareUI()
   9:   
  10:  End Sub

image

Kommentare sind geschlossen