0

是否可以将 ShareMediaTask 与保存在隔离存储上的图像一起使用。我尝试通过应用下面给定的代码来实现相同的功能。但是当我运行代码时,当前页面会闪烁并返回到同一页面。

  var shareMediaTask = new ShareMediaTask { FilePath = "isostore:" + LocalImagePath };
  shareMediaTask.Show();
4

2 回答 2

4

抱歉,目前 ShareMediaTask 仅支持在“已保存图片”文件夹的“相机胶卷”文件夹中的媒体库中的项目。这样做是出于安全原因。例如,如果您使用 ShareMediaTask 并与另一个应用程序共享,则该应用程序永远不应访问您应用程序的 IsoStore。因此,ShareMediaTask 目前不支持 IsoStore 文件路径。

这是如何将图像保存到 MediaLibrary Saved Pictures 并使用 ShareMediaTask @ http://www.reflectionit.nl/Blog/PermaLink620a4c87-a4af-4007-b4bc-81d851b11658.aspx的端到端代码示例

private void ButtonShare_Click(object sender, RoutedEventArgs e) {
    var bmp = new WriteableBitmap(this.ContentPanel, null);
    var width = (int)bmp.PixelWidth;
    var height = (int)bmp.PixelHeight;
    using (var ms = new MemoryStream(width * height * 4)) {
        bmp.SaveJpeg(ms, width, height, 0, 100);
        ms.Seek(0, SeekOrigin.Begin);
        var lib = new MediaLibrary();
        var picture = lib.SavePicture(string.Format("test.jpg"), ms);

        var task = new ShareMediaTask();

        task.FilePath = picture.GetPath();

        task.Show();
    }
}

您还可以将图片保存到相机胶卷文件夹中,并使用 MediaLibrary.SavePictureToCameraRoll() 扩展方法使用 ShareMediaTask。

于 2012-12-20T00:25:51.350 回答
0


我已经完成了以下代码:

 BitmapImage bi = new BitmapImage(new Uri(string.Format("Data/{0}/{1}", Category, img), UriKind.Relative)));
        bi.CreateOptions = BitmapCreateOptions.BackgroundCreation;
        bi.ImageOpened += (s1, e1) =>
        {
            var bmp = new WriteableBitmap(bi);

            var width = (int)bmp.PixelWidth;
            var height = (int)bmp.PixelHeight;

            using (var ms = new MemoryStream(width * height * 4))
            {
                bmp.SaveJpeg(ms, width, height, 0, 100);
                ms.Seek(0, SeekOrigin.Begin);
                var lib = new MediaLibrary();
                Picture picture = null;
                try
                {
                    picture = lib.SavePicture(string.Format("test.jpg"), ms);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }

                var task = new ShareMediaTask();

                task.FilePath = picture.GetPath();

                task.Show();
            }

        };
于 2014-06-29T06:37:41.490 回答