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

Configured SD card path in emulator is null - Windows Phone 8.1 (runtime)

我对 WP 8.1(运行时)SD 卡访问感到非常困惑。我试图在 WP 8.1(运行时)SD 卡中创建一个文件夹,但无法这样做。我正在关注 MSDN tutorial to access sd card in WinRT. I need SD card access in order to store my App's backup & log folders. By following 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 returns 空字符串而不是返回我配置的路径。我在 Capabilities 下启用了 RemovableStorage 并添加了 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 卡中创建自定义文件夹(应用程序名称文件夹),我会轻松创建子文件夹(备份、日志)。但是现在我一直在获取根路径。

Edit:按照评论中的建议,通过在异步调用中添加 ConfigureAwait(false) 解决了死锁问题,但 sdcard 路径仍然为空,如何获取路径并创建文件夹在那里?

使用 "externalDevices" 您正在查询 phone 中的所有存储设备。 然后试图找到它的路径。

你应该找到sdcard的根文件夹的路径,而不是sdcard本身的路径。

"sdCard.path" 可以。

在 Subha 的评论后编辑:
假设在 appxmanifest 中声明了 Removable Storage 并且模拟器插入了模拟的 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;
}