WP8将SharedStorge文件直接复制到IsolatedStorage

时间:2013-12-28 13:32:34

标签: c# windows-phone-8 windows-phone isolatedstorage file-access

我正在开发一个Windows Phone 8应用程序,但是当我尝试访问“local”文件夹中的文件时,我遇到了许多文件访问权限异常的问题,这阻碍了我的应用程序的批准(这只发生在应用程序之后)由WP商店签名,而不是从Visual Studio部署)。为了解决这个问题,我已将所有文件操作移至IsolatedStorage,这似乎解决了这些问题。

我只剩下一个问题了。我的应用程序需要使用文件扩展系统来打开外部文件,这似乎涉及首先将文件复制到本地文件夹,然后我可以手动将其复制到IsolatedStorage。我在实现它时没有问题,但是一旦系统尝试将外部文件复制到本地文件夹中,似乎也会发生文件访问权限异常。

我认为这可以解决的唯一方法是,如果我可以指示系统直接复制到IsolatedStorage,但我无法想象如何做到这一点,或者甚至可能。似乎虽然SharedStorageAccessManager只能复制到StorageFolder实例,但我不知道如何创建一个指向IsolatedStorage的实例,任何想法?

PS。您是否认为Microsoft系统可能使用某些不称职的证书或某些东西对我的应用程序进行签名,因为从Visual Studio部署应用程序时没有一丝麻烦,只有在Microsoft测试或从商店安装时才会发生这种情况使用Beta提交方法。

下面是尝试从电子邮件中打开文件时在消息框中显示的捕获异常的屏幕截图:

Screenshot of exception

编辑: 为了使它更清晰,我不需要帮助确定使用深层链接uri将外部文件复制到我的应用程序目录中的常规做法。我需要帮助才能将其直接复制到isolatedstorage或解决文件访问异常。

2 个答案:

答案 0 :(得分:0)

收听文件启动

启动应用以处理特定文件类型时,会使用深层链接URI将用户带到您的应用。在URI中,FileTypeAssociation字符串指定URI的源是文件关联,fileToken参数包含文件令牌。

例如,以下代码显示了文件关联的深层链接URI。

/FileTypeAssociation?fileToken=89819279-4fe0-4531-9f57-d633f0949a19

启动后,将传入的深层链接URI映射到可以处理文件的应用页面

// Get the file token from the URI
// (This is easiest done from a UriMapper that you implement based on UriMapperBase)
// ...

// Get the file name.
string incomingFileName = SharedStorageAccessManager.GetSharedFileName(fileID);

// You will then use the file name you got to copy it into your local folder with
// See: http://msdn.microsoft.com/en-us/library/windowsphone/develop/windows.phone.storage.sharedaccess.sharedstorageaccessmanager.copysharedfileasync(v=vs.105).aspx 

SharedStorageAccessManager.CopySharedFileAsync(...)

我已在MSDN http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx

中列出了有关如何执行此操作的信息

阅读该文档,应该清楚如何使用API​​以及如何设置URI映射器。

祝你好运:)

答案 1 :(得分:0)

好的我明白了。 “安装”目录实际上是受限制的访问,但由于某种原因,Visual Studio签名过程使应用程序具有足够的权限来访问此文件夹。确定相对目录的正确过程不是使用“Directory.GetCurrentDirectory()”而是使用“ApplicationData.Current.LocalFolder”。希望这有帮助!