Winrt Phone 8.1页面上的应用程序共享任务功能只能运行一次

时间:2015-08-17 05:58:34

标签: windows-runtime windows-phone-8.1

我的应用程序中有一个页面,它共享简单的文本,但工作不正常。

制作此功能的步骤。

  1. 转到页面点击共享它显示可以共享的应用程序。

  2. 点击后退按钮=>再次点击分享按钮。

  3. 这次不会打开共享屏幕。

  4. 将代码粘贴在下面:

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            _dataTransferManager.DataRequested -= OnDataRequested;
            this.navigationHelper.OnNavigatedFrom(e);
        }
    
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            _dataTransferManager = DataTransferManager.GetForCurrentView();
            _dataTransferManager.DataRequested += OnDataRequested;
            this.navigationHelper.OnNavigatedTo(e);
        }
    
        private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
        {
            e.Request.Data.Properties.Title =  obj.Title;
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(obj.Description);
            string html = "";
            foreach (HtmlNode item in doc.DocumentNode.Descendants())
            {
                if (item.Name == "body")
                {
                    html = item.InnerHtml;
                }
            }
            e.Request.Data.Properties.Description = html;
            e.Request.Data.SetText(html);
        }
    
        private void AppBarButton_Click_1(object sender, RoutedEventArgs e)
        {
            //DataTransferManager.ShowShareUI();
            if (CMSService.IsConnectedToInternet())
            {
                DataTransferManager.ShowShareUI();
            }
            else
            {
                ContentText.Text = App.GetResource("NoInternetAlert");
                AlertMessage.ShowAsync();
            }
        }
    

    虽然调试共享一直有效。

1 个答案:

答案 0 :(得分:1)

我怀疑问题是因为您在 OnNavigatedFrom 事件中取消订阅了_dataTransferManager.DataRequested -= OnDataRequested;。这在调试时可以正常工作,因此不会引发此事件 - 虽然禁用了调试PLM并且Suspending/Resuming events won't be raised

当运行app normal时,暂停将调用 OnNavigatedFrom ,但OnNavigatedTo won't be raised upon resuming,因此_dataTransferManager.DataRequested += OnDataRequested;不会有吊文。

在这种情况下,您可以使用暂停/恢复(或其他)事件来处理 DataTransferManager