c# windows-phone sharing windows-phone-8

c# - Compartir desde Windows Phone 8



windows-phone sharing (4)

Estoy trabajando en una aplicación para Windows Phone 8 y estoy tratando de compartir contenido a través del DataTransferManager. La documentación de la API de Windows dice que es compatible con Windows Phone pero cuando se llama a la función DataTransferManager.GetForCurrentView() recibo una excepción

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

He estado buscando una respuesta y no puedo encontrar a nadie más con el mismo problema, cualquier ayuda sería apreciada. Todas las muestras sobre este tema parecen ser específicas de Windows 8, pero Phone 8 incluye estas funciones. Aquí hay un código de muestra de mi aplicación.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(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(); }

De nuevo, la excepción se muestra cuando la página se carga en DataTransferManager.GetForCurrentView(); función para que no llegue a las otras líneas, pero las incluyó de todos modos. Intenté agregar / quitar permisos y ensamblajes pero me falta algo. También intenté poner la función en diferentes eventos (como la función onTap) con los mismos resultados.

Si alguien está interesado en probar esto por su cuenta, aquí hay documentación:

DataTransferManager

Datos solicitados

Paquete de datos

GetForCurrentView ()

ACTUALIZAR

Aunque puede que no sea la mejor solución dado el contexto de esta pregunta, estoy implementando las tareas de correo electrónico / SMS / enlace como se describe a continuación en lugar de usar DataTransferManager. Parece que DataTransferManager puede no ser accesible en WP8 y, aunque las tareas tomarán una cantidad de funciones diferentes, parecen ser la mejor manera de realizar la funcionalidad deseada.


¿Has probado con el método totalmente calificado? Sería algo como esto:

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

Además, asegúrese de que su objetivo sea Windows Phone 8.


Creo que he encontrado la mayoría de lo que estaba buscando con Lanzadores ... En lugar de solo usar la funcionalidad general de uso compartido de Windows 8, puedo ser específico con Tareas / Lanzadores.

Desafortunadamente no tiene tantas opciones de uso compartido como el encanto, implementaré varias funciones para correo electrónico / sms / social, pero hasta ahora esta es la mejor solución.

Estas son las funciones que implementaré

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

Árbitro:

Lanzadores para Windows Phone

Compartir tarea de enlace


El contrato compartido de Windows 8 no es compatible con WP8. Ni siquiera hay un encanto Compartir en WP8. ¿Por qué estás tratando de usar DataTransferManager?

En lugar de usar el Contrato de Acciones, la mayoría de los usos pueden funcionar bien con los protocolos personalizados WP8 app2app y las extensiones de archivos . Usando la aplicación WP8 puedes transferir archivos y datos a través de aplicaciones. A pesar de que el contrato estandarizado del Contrato de Acciones ya no existe, las aplicaciones pueden crear sus propios contratos utilizando protocolos personalizados y extensiones de archivos.

Aquí, por ejemplo, puede obtener más información sobre una implementación de terceros en el mundo real de los protocolos personalizados de Nokia Music .