从Windows Phone 8共享

ell*_*ayo 9 c# sharing windows-phone windows-phone-8

我正在开发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: 
Run Code Online (Sandbox Code Playgroud)

我一直在寻找答案,找不到其他人有同样的问题,任何帮助将不胜感激.关于此主题的所有示例似乎都是Windows 8特定的,但是Phone 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();
    }
Run Code Online (Sandbox Code Playgroud)

同样,当页面加载到DataTransferManager.GetForCurrentView();函数上时会显示异常,因此它不会到达其他行,但无论如何都包含它们.我已经尝试添加/删除权限和程序集,但必须遗漏一些东西.我也尝试将函数放在不同的事件(例如onTap函数)中,结果相同.

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

DataTransferManager

DataRequested

DataPackage

GetForCurrentView()

UPDATE

虽然考虑到这个问题的上下文,它可能不是最佳解决方案,但我正在实现如下所述的Email/Sms/Link任务,而不是使用DataTransferManager.似乎在WP8中可能无法访问DataTransferManager,虽然任务将采用许多不同的功能,但它们似乎是执行预期功能的最佳方式.

ell*_*ayo 10

我想我已经找到了我用Launchers寻找的大部分内容......而不仅仅是使用Windows 8通用共享功能,我可以使用Tasks/Launchers.

不幸的是,它没有魅力那么多的共享选项,我将实现电子邮件/短信/社交的几个功能,但到目前为止这是最好的解决方案.

以下是我将要实现的功能

    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();
    }
Run Code Online (Sandbox Code Playgroud)

参考:

适用于Windows Phone的启动器

分享链接任务