我使用CameraCaptureTask捕获图像并将它们保存到IsolatedStorage。然后我填充一个列表框,在我的MainPage上用这些保存的图像命名为recent
。然后我想使用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
。似乎仍然无效。
答案 0 :(得分:1)
您无法与隔离存储共享,因为只能访问您的应用。在您的情况下,您应首先将图片保存到媒体库(除非它们自动保存在那里),然后您应该使用媒体库的路径,而不是您自己的路径。与您的情况非常相似的情况描述为here in MSDN。
答案 1 :(得分:0)
每个应用程序都是沙盒。即隔离存储是为每个应用程序分配的内存,用于存储其应用相关数据。其他应用程序无法访问存储在独立存储中的数据。从iso存储中保存和检索数据文件的方式与文件浏览器稍有不同。 如果将图像文件保存到媒体库,则可以进行此类访问。
启动器和选择器是为此目的提供的选项。