Windows Phone Silverlight 8.1 App对SD卡的写入权限

时间:2014-07-03 08:32:21

标签: sd-card windows-phone-8.1

随着Windows Phone 8.1的推出,它现在可以对Windows Phone 8.1设备的SD卡进行写访问:

MSDN: Windows Phone 8.1 Access SD Card

您指定 removableStorage 功能并注册您需要处理的所需文件扩展名,并且您可以查看SD卡的文件和文件夹。

我的问题是你如何在SD卡中创建一个新文件,如果它不存在?在查看ExternalStorageFolder的私有成员 m_internalFolderPath 后,我设法完成了以下操作:

File.Open("D:\\test.txt", FileMode.OpenOrCreate);

但使用" D:" 作为SD卡的根路径是否可以?我无法在网上找到任何参考资料。是字母" D:"设备/供应商特定或我应该相信它作为SD卡的信件?

2 个答案:

答案 0 :(得分:2)

通过以D:

开头的路径创建文件
File.Create(@"D:\test.txt");

在大多数情况下都可以使用,但是在任何地方都没有说过操作系统会为SD卡分配D字母(事实上我认为我还没见过其他的)。但可以肯定的是,您始终可以通过 StorageFolder 访问SD卡:

StorageFolder SDDevice = Windows.Storage.KnownFolders.RemovableDevices;
StorageFolder sdCard = (await SDDevice.GetFoldersAsync()).FirstOrDefault();
await sdCard.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting)

要完成上述工作,您需要在 package.appxmanifest 文件中声明功能 FileTypeAssociations

a little issue with VS and Windows Phone 8.1 Silverlight - 您需要手动添加 FileTypeAssociations

答案 1 :(得分:2)

上面写的所有内容都是正确的,但这里有一些你需要了解的问题。在过去的几天里,我一直在用一些间歇性的问题撕掉我的头发,最值得注意的是,当简单地调用Windows.Storage.KnownFolders.RemovableDevices并记录所有设置时,会出现ACCESS_DENIED错误。

1 ...首先,重要的是要了解您的清单中至少需要一个fileTypeAssociation才能调用第一行Windows.Storage.KnownFolders.RemovableDevices。 2 ...其次,要在mainfest文件中注册对fileTypeAssociations的任何更改,您必须在调试之前在设备或模拟器上卸载应用程序(这会导致我几个小时的问题,主要是因为我不相信需要一个fileTypeAssociation来获取SD卡的句柄。)

希望这有助于节省一些头发。