从Windows Phone 8的共享(Sharing from Windows Phone 8)

2019-06-21 08:00发布

我工作在Windows Phone 8的应用程序,我试图分享通过DataTransferManager内容。 在Windows API文档说,它在Windows Phone的支持,但是当DataTransferManager.GetForCurrentView()函数被调用我得到一个异常

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

我一直在寻找的答案并不能找到任何人以同样的问题,任何帮助,将不胜感激。 有关这个主题的所有样品似乎是Windows 8的具体,但电话8不包括这些功能。 下面是从我的应用程序的示例代码。

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

同样,异常示出当在加载页面DataTransferManager.GetForCurrentView(); 功能,所以它不会到其他线路,但是包括他们无论如何。 我试着添加/删除权限和组件,但必须缺少的东西。 我也试图把不同的事件(如和Ontap功能)功能具有相同的结果。

如果有人有兴趣尝试这种对自己这里是一些文档:

数据传输管理器

DataRequested

DataPackage

GetForCurrentView()

UPDATE

虽然它可能不是给出这个问题的背景下,最好的解决办法,如下所述,而不是使用DataTransferManager我实现电子邮件/短信/链接任务。 看来,DataTransferManager可能无法在WP8访问,虽然任务将采取许多不同的功能,他们似乎是执行预定的功能的最佳途径。

Answer 1:

我想我已经找到了大部分的东西我一直在寻找与发射器......而不是仅仅使用Windows 8普通共享功能,我可以用特定的任务/发射器。

遗憾的是它并没有很多的共享选项的魅力呢,我会为被实现多种功能的电子邮件/短信/社会,但到目前为止,这是最好的解决办法。

下面是我将实现的功能

    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 = "recipient@example.com",
                Cc = "cc@example.com",
                Bcc = "bcc@example.com"
            };

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

参考:

发射器的Windows手机

分享链接任务



Answer 2:

根据我的API参考, DataTransferManager仅保留给本地应用程序。 Windows Phone的API快速入门 。



Answer 3:

您必须使用完全限定的方法试过吗? 这将是这样的:

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

此外,请确保您的目标的Windows Phone 8。



Answer 4:

在Windows 8分享合约不支持WP8。 甚至没有在WP8一个共享的魅力。 为什么你想使用DataTransferManager?

而不是使用共享合同,最usecases可以工作只是罚款WP8 app2app定制协议和文件扩展名 。 使用WP8应用程序,你可以在应用程序传输文件和数据。 g虽然分成合约的标准化合约走了,应用程序可以创建使用自定义的协议和文件扩展自己的合同。

这里有个例子,你可以了解一个真实世界的第三方实施的诺基亚音乐定制协议 。



文章来源: Sharing from Windows Phone 8