ShareMediaTask与隔离存储映像的使用

时间:2012-12-13 07:55:20

标签: windows-phone-7 windows-phone-7.1 windows-phone-8

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

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

2 个答案:

答案 0 :(得分:4)

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

以下是如何将图像保存到MediaLibrary已保存图片并使用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。

答案 1 :(得分: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();
            }

        };