在Windows 8应用程序中共享Image时,为什么Mail选项不可用?

时间:2013-10-18 05:31:41

标签: c# windows-8 windows-runtime microsoft-metro winrt-xaml

我试图share an Image通过Share charm,但在魅力'Mail'应用程序中不可用,因此无法通过邮件共享图像。但我试图通过Native Photo app&有Mail选项可用。

my app: share view Native Photo app :Share view

在我的代码下面

    private async void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
    {
    DataRequestDeferral deferral = e.Request.GetDeferral();

    DataPackage requestData = e.Request.Data;
    requestData.Properties.Title = "Image";
    IRandomAccessStream stream = new InMemoryRandomAccessStream();
    Guid encoderId;
    switch (file.FileType)
    {
        case ".png":
            encoderId = BitmapEncoder.PngEncoderId;
            break;
        case ".jpg":
        case ".jpeg":
        default:
            encoderId = BitmapEncoder.JpegEncoderId;
            break;
    }
    BitmapEncoder encoder = await BitmapEncoder.CreateAsync(encoderId, stream);
    Stream pixelStream = image.PixelBuffer.AsStream();
    byte[] pixels = new byte[pixelStream.Length];
    await pixelStream.ReadAsync(pixels, 0, pixels.Length);
    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)image.PixelWidth, (uint)image.PixelHeight, 96.0, 96.0, pixels);
    requestData.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
    await encoder.FlushAsync();

    deferral.Complete();
}

我错过了代码中的任何内容吗?

------------------------------------- EDIT ---------

有另一种选择;请参阅此this link

1 个答案:

答案 0 :(得分:2)

您检查了sharing content source app sample吗?它在说......

  

建议使用SetBitmap和SetStorageItems进行共享   单个图像,因为目标应用程序可能只支持其中一个。

因此,如果您仅使用SetBitmap(...),则Mail应用无法识别。您需要创建图像文件临时文件夹,然后使用SetStorageItems(...)