我对WP 8.1(运行时)SD卡访问非常困惑。我正在尝试在WP 8.1(运行时)Sd卡中创建一个文件夹,但无法这样做。我正在关注MSDN教程以访问WinRT中的SD卡。我需要SD卡访问才能存储我的应用程序备份&日志文件夹。通过以下this教程,我在模拟器中配置了sd卡路径,我使用下面的代码来访问该路径。
private async Task<string> AsyncExternalStoragePath()
{
// Get the logical root folder for all external storage devices.
Windows.Storage.StorageFolder externalDevices = Windows.Storage.KnownFolders.RemovableDevices;
// Get the first child folder, which represents the SD card.
StorageFolder sdCard = (await externalDevices.GetFoldersAsync().AsTask().ConfigureAwait(false)).FirstOrDefault();
}
externalDevices.Path
返回空字符串,而不是返回我配置的路径。我在RemovableStorage
下启用了Capabilities
并添加了FileTypeAssociations
。但老实说,这FileTypeAssociations
对我来说非常困惑。我读了很多文章,但我还没有完全澄清。
基本上我想在我的应用名称文件夹下面有两个文件夹和一个文件。
AppnameFolder -> BackupFolder, LogFolder, Infile
在每个文件夹下
Backup -> To keep last five backup files (.db)
Log -> To create log files per day basis (.txt)
inifile -> To enable logging
如果我知道如何在SD卡中创建自定义文件夹(应用程序名称文件夹),我会轻松创建子文件夹(备份,日志)。但是现在我被困在获得根路径。
编辑:死锁问题是通过在注释中建议的异步调用中添加ConfigureAwait(false)
来解决的,但sdcard路径仍然为空,我如何获取路径并在那里创建文件夹?
答案 0 :(得分:1)
使用“externalDevices”,您正在查询手机中的所有存储设备。 然后试图找到它的路径。
您应该找到SD卡的根文件夹的路径,而不是SD卡本身的路径。
“sdCard.path”会有效。
在Subha评论后编辑 :
假设在appxmanifest中声明了可移动存储并且模拟器插入了模拟的SD卡(如教程所述; Storage Sense是否弹出?),以下内容应该有效。
请注意,我没有使用任务。
StorageFolder sdcard;
public async void read_sdcard_button_click(object sender, RoutedEventArgs e)
{
sdcard = (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault();
}
private void some_other_method()
{
textbox.Text = sdcard.path;
}