无法在Windows 10共享使用DataTransferManager图像

问题描述:

要求:共享文本和图像使用DataTransferManager成Facebook在视窗10无法在Windows 10共享使用DataTransferManager图像

问题:无法共享图像。

下面示出的是我所使用的代码,

private async void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args) 
     { 
      DataRequestDeferral deferral = args.Request.GetDeferral(); 
      args.Request.Data.Properties.Title = "Sharing sample"; 
      args.Request.Data.SetText("Testing share in universal app"); 
      var imageUri = "http://cdn.vrworld.com/wp-content/uploads/2015/01/microsoft-announces-windows-10_ahab.1920.jpg"; 

      //var storageFile = await StorageFile.CreateStreamedFileFromUriAsync("ShareFile", new Uri(imageUri), null); 
      //List<IStorageItem> storageItems = new List<IStorageItem>(); 
      //storageItems.Add(storageFile); 
      //args.Request.Data.SetStorageItems(storageItems); 

      args.Request.Data.SetBitmap(Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri(imageUri))); 
      deferral.Complete(); 
     } 

当我使用SetBitmap方法,只有标题和文本正在被共享。该图像既不显示在共享面板中,也不共享给目标应用程序。

当我使用SetStorageItems(请参阅注释代码)时,没有任何项目被共享。共享面板上显示默认的“您的想法”文字。

任何反馈表示赞赏,谢谢!

+0

您是否尝试过分享到其他应用程序? Facebook可能不支持这些数据类型。 –

+0

@彼得托尔MSFT - 我试图分享到微博,但也有图像没有出现。我面临的另一个问题是默认邮件应用程序和Google +未显示在共享窗格的应用程序列表中。 – Bells

不幸的是不支持共享URI流式文件。这是我怎么会去这样做:

  1. 当用户点击分享按钮,开始下载文件 并显示某种进步,如果它是一个很大的文件。你当然也可以预先下载文件 。设置包含该文件的StorageFile实例 。
  2. 呼叫DataTransferManager.ShowShareUI
  3. 在你DataRequested处理程序,使用SetStorageItems共享StorageFile实例。
+0

谢谢你,将检查这种方式并更新结果。 – Bells

+0

请检查:http://*.com/questions/42856996/uwp-share-feature-not-working-in-windows-10-mobile?noredirect=1#comment72822335_42856996它似乎失败有些相关。 – SuperJMN

我想你指的份额的目标在UWP 你可以参考这个网址 https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ShareSource

此示例演示如何应用程序共享内容与其他应用程序。本示例使用Windows.ApplicationModel.DataTransfer命名空间中的类。您可能想要更详细地查看的某些类是用于启动共享操作的DataTransferManager类和用于打包内容的DataPackage类。由于每个共享场景通常涉及两个应用程序(源应用程序和接收内容的目标应用程序),因此我们建议您在安装并运行此应用程序时安装并部署共享内容目标应用程序示例。通过这种方式,您可以看到共享如何从端到端进行工作。

此示例介绍了如何以各种格式共享内容,其中包括:

1.Text 引擎WEB链接 3.应用链接 4.Images 5.Files 6.Delay渲染文件 7.HTML内容 8.Custom数据

protected override bool GetShareContent(DataRequest request) 
    { 
     bool succeeded = false; 

     if (this.imageFile != null) 
     { 
      DataPackage requestData = request.Data; 
      requestData.Properties.Title = TitleInputBox.Text; 
      requestData.Properties.Description = DescriptionInputBox.Text; // The description is optional. 
      requestData.Properties.ContentSourceApplicationLink = ApplicationLink; 

      // It's recommended to use both SetBitmap and SetStorageItems for sharing a single image 
      // since the target app may only support one or the other. 

      List<IStorageItem> imageItems = new List<IStorageItem>(); 
      imageItems.Add(this.imageFile); 
      requestData.SetStorageItems(imageItems); 

      RandomAccessStreamReference imageStreamRef = RandomAccessStreamReference.CreateFromFile(this.imageFile); 
      requestData.Properties.Thumbnail = imageStreamRef; 
      requestData.SetBitmap(imageStreamRef); 
      succeeded = true; 
     } 
     else 
     { 
      request.FailWithDisplayText("Select an image you would like to share and try again."); 
     } 
     return succeeded; 
    } 
+1

链接中的另一个复制粘贴答案。这可能是我在你的答案中找到的第10个。请考虑如何更正确地回答您的提问者,或者更确切地说,我会说。复制粘贴的答案只值得评论。 – Ian

+0

源代码更新 –

+1

如果您从别处复制/粘贴代码,您必须**清楚它不是由您编写的。仅添加链接是不够的。使用[引用格式](http://*.com/help/formatting)(用'>'开始行)将您的文字与您复制的文字区分开来。 –