无法在 Windows 10 中使用 DataTransferManager 共享图像
Unable to share image using DataTransferManager in Windows 10
要求: 在 Windows 10.
中使用 DataTransferManager
将文本和图像分享到 Facebook
问题:无法共享图像。
下面显示的是我使用的代码,
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
(见注释代码)时,none 项被共享。默认 "What's on your mind" 文本显示在共享面板上。
欢迎任何反馈,谢谢!
很遗憾,不支持共享 URI 流文件。以下是我将如何去做:
- 当用户点击分享按钮时,开始下载文件
如果它是一个大文件,则显示某种进度。你也可以
当然要预先下载文件。设置一个
StorageFile
实例
包含文件。
- 呼叫DataTransferManager.ShowShareUI
- 在您的
DataRequested
处理程序中,使用 SetStorageItems
共享 StorageFile
实例。
我想你指的是 UWP 中的共享目标
你可以参考这个 URL
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ShareSource
此示例演示了一个应用如何与另一个应用共享内容。此示例使用来自 Windows.ApplicationModel.DataTransfer 命名空间的 classes。您可能想要更详细地查看的一些 class 是用于启动共享操作的 DataTransferManager class 和用于打包数据的 DataPackage class内容。因为每个共享场景通常涉及两个应用程序——源应用程序和接收内容的目标应用程序——我们建议你在安装时安装和部署共享内容目标应用程序示例,运行 这个。这样,您就可以从头到尾了解共享的工作原理。
此示例介绍了如何以多种格式共享内容,包括:
1.Text
2.Web link
3.Application link
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;
}
要求: 在 Windows 10.
中使用DataTransferManager
将文本和图像分享到 Facebook
问题:无法共享图像。
下面显示的是我使用的代码,
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
(见注释代码)时,none 项被共享。默认 "What's on your mind" 文本显示在共享面板上。
欢迎任何反馈,谢谢!
很遗憾,不支持共享 URI 流文件。以下是我将如何去做:
- 当用户点击分享按钮时,开始下载文件
如果它是一个大文件,则显示某种进度。你也可以
当然要预先下载文件。设置一个
StorageFile
实例 包含文件。 - 呼叫DataTransferManager.ShowShareUI
- 在您的
DataRequested
处理程序中,使用SetStorageItems
共享StorageFile
实例。
我想你指的是 UWP 中的共享目标 你可以参考这个 URL https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ShareSource
此示例演示了一个应用如何与另一个应用共享内容。此示例使用来自 Windows.ApplicationModel.DataTransfer 命名空间的 classes。您可能想要更详细地查看的一些 class 是用于启动共享操作的 DataTransferManager class 和用于打包数据的 DataPackage class内容。因为每个共享场景通常涉及两个应用程序——源应用程序和接收内容的目标应用程序——我们建议你在安装时安装和部署共享内容目标应用程序示例,运行 这个。这样,您就可以从头到尾了解共享的工作原理。
此示例介绍了如何以多种格式共享内容,包括:
1.Text 2.Web link 3.Application link 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;
}