0

我对 WP 8.1(运行时)SD 卡访问感到非常困惑。我正在尝试在 WP 8.1(运行时)SD 卡中创建一个文件夹,但无法这样做。我正在按照MSDN教程在 WinRT 中访问 sd 卡。我需要访问 SD 卡才能存储我的应用程序的备份和日志文件夹。通过遵循教程,我在模拟器中配置了 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 路径仍然为空,如何获取路径并在那里创建文件夹?

4

1 回答 1

1

使用“externalDevices”,您可以查询手机中的所有存储设备。然后试图找到它的路径。

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

“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;
}
于 2015-07-27T12:17:33.450 回答