1

我正在使用 CameraCaptureTask 捕获图像并将它们保存到 IsolatedStorage。然后我用这些保存的图像填充一个列表框,recent在我的 MainPage 上命名。然后我想使用 ShareMediaTask 来分享这些图像之一。但是,我遇到问题的 ShareMediaTask 要求是从 IsolatedStorage 获取图像的文件路径。我正在做的是使用列表框的 SelectionChanged 事件处理程序来确定用户选择要共享的图像。然后,在按钮单击事件中,我在 IsolatedStorage 中搜索以从列表框中检索所选图像的完整路径。即使显示了完整路径,ShareMediaTask 也永远不会完成。

MainPage.xaml.cs

//The `recent` ListBox's SelectionChanged event
private void recent_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //retrieve the name of the image that was autogenerated by CameraCaptureTask completed event
        fileName = capturedPicture.FileName;
        //Combine the directory and file name
        filePath = Path.Combine(PictureRepository.IsolatedStoragePath, fileName);
    }

private void Share()
    {
        if(fileName != null)
        {
            var isoFile = IsolatedStorageFile.GetUserStoreForApplication();

            //use the path to open the picture file from the isolated storage by using the IsolatedStorageFile.OpenFile method
            var fileStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read);
            string name = fileStream.Name;

            _shareTask = new ShareMediaTask();
            _shareTask.FilePath = name;
            _shareTask.Show();
        }            
    }

Share()通过按钮单击事件调用的方法中,我想在 IsolatedStorage 中获取图像的完整路径的唯一方法是使用IsolatedStorageFile.OpenFile允许我访问的方法fileStream.Name。看来还是不行。

4

2 回答 2

1

您无法从您的隔离存储中共享,因为访问它仅限于您的应用程序。在您的情况下,您应该首先将图片保存到媒体库(除非它们自动保存在那里),然后您应该使用媒体库的路径,而不是您自己的。MSDN中描述了一个与您的案例非常相似的案例。

于 2013-06-17T07:53:10.337 回答
0

每个应用程序都是沙盒的。即隔离存储是为每个应用程序分配的内存,用于存储其应用程序相关数据。其他应用程序无法访问存储在隔离存储中的那些数据。从 iso 存储中保存和检索数据文件的方式与文件浏览器略有不同。如果您将图像文件保存到媒体库,则可以进行此类访问。

启动器和选择器是为此目的提供的选项。

于 2013-06-17T09:22:37.927 回答