Condivisione da Windows Phone 8

Sto lavorando a un’app di Windows Phone 8 e sto provando a condividere il contenuto tramite DataTransferManager. La documentazione dell’API di Windows dice che è supportata in Windows Phone ma quando viene chiamata la funzione DataTransferManager.GetForCurrentView() ottengo un’eccezione

 System.NotSupportedException was unhandled by user code HResult=-2146233067 Message=Specified method is not supported. Source=Windows InnerException: 

Ho cercato una risposta e non riesco a trovare nessun altro con lo stesso problema, qualsiasi aiuto sarebbe apprezzato. Tutti i campioni su questo argomento sembrano essere specifici per Windows 8, ma Phone 8 include queste funzioni. Ecco un codice di esempio dalla mia app.

  protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += new TypedEventHandler(dataTransferManager_DataRequested); } private void dataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs e) { DataPackage requestData = e.Request.Data; requestData.Properties.Title = "Share Text Example"; requestData.Properties.Description = "An example of how to share text."; requestData.SetText("Hello World!"); } private void Button_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) { DataTransferManager.ShowShareUI(); } 

Di nuovo, l’eccezione viene mostrata quando la pagina viene caricata su DataTransferManager.GetForCurrentView(); funziona in modo che non arrivi alle altre linee, ma le includa comunque. Ho provato ad aggiungere / rimuovere permessi e assembly, ma mi manca qualcosa. Ho anche provato a inserire la funzione in diversi eventi (come la funzione onTap) con gli stessi risultati.

Se qualcuno è interessato a provare questo da solo qui c’è qualche documentazione:

DataTransferManager

DataRequested

DataPackage

GetForCurrentView ()

AGGIORNARE

Anche se potrebbe non essere la soluzione migliore data il contesto di questa domanda, sto implementando le attività Email / Sms / Link come descritto di seguito piuttosto che usare DataTransferManager. Sembra che DataTransferManager potrebbe non essere accessibile in WP8 e sebbene le attività richiederanno una serie di funzioni diverse, esse sembrano essere il modo migliore per eseguire la funzionalità desiderata.

Penso di aver trovato la maggior parte di ciò che stavo cercando con i Launcher … Piuttosto che usare solo la funzionalità di condivisione generale di Windows 8, posso essere specifico con Task / Launcher.

Sfortunatamente non ha tante opzioni di condivisione come il fascino, implementerò diverse funzioni per email / sms / social ma finora questa è la soluzione migliore.

Ecco le funzioni che implementerò

  private void ShareLink(object sender, System.Windows.Input.GestureEventArgs e) { ShareLinkTask shareLinkTask = new ShareLinkTask() { Title = "Code Samples", LinkUri = new Uri("http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff431744(v=vs.92).aspx", UriKind.Absolute), Message = "Here are some great code samples for Windows Phone." }; shareLinkTask.Show(); } private void ShareEmail(object sender, System.Windows.Input.GestureEventArgs e) { EmailComposeTask emailComposeTask = new EmailComposeTask() { Subject = "message subject", Body = "message body", To = "[email protected]", Cc = "[email protected]", Bcc = "[email protected]" }; emailComposeTask.Show(); } private void ShareSMS(object sender, System.Windows.Input.GestureEventArgs e) { SmsComposeTask smsComposeTask = new SmsComposeTask() { Body = "Try this new application. It's great!" }; smsComposeTask.Show(); } 

Rif:

Lanciatori per Windows Phone

Condividi attività di collegamento

In base al riferimento API, DataTransferManager è riservato solo alle app native. Avvio rapido dell’API di Windows Phone .

Hai provato a utilizzare il metodo completo? Sarebbe qualcosa del genere:

 DataTransferManager dataTransferManager = indows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView(); 

Inoltre, assicurati che il tuo objective sia Windows Phone 8.

Il contratto di condivisione di Windows 8 non è supportato su WP8. Non c’è nemmeno un fascino di condivisione su WP8. Perché stai cercando di utilizzare DataTransferManager?

Invece di utilizzare il contratto di condivisione, la maggior parte dei casi d’uso può funzionare perfettamente con i protocolli WP8 app2app personalizzati ed estensioni di file . Utilizzando l’app WP8 ​​è ansible trasferire file e dati attraverso le app. Anche se il contratto standardizzato del Contratto di condivisione è scomparso, le app possono creare i propri contratti utilizzando protocolli personalizzati ed estensioni di file.

Qui, ad esempio, è ansible ottenere ulteriori informazioni sull’implementazione di terze parti dei protocolli personalizzati Nokia Music nel mondo reale.