模拟器中配置的SD卡路径为空 - Windows Phone 8.1(运行时)

时间:2015-07-27 07:14:13

标签: c# windows-runtime windows-phone-8.1 removable-storage

我对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路径仍然为空,我如何获取路径并在那里创建文件夹?

1 个答案:

答案 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;
}