Настроен путь к SD-карте в эмуляторе - NULL - Windows Phone 8.1 (время выполнения)
Я очень сильно запутался с доступом к SD-карте в WP 8.1 (во время выполнения). Я пытаюсь создать папку в SD-карте WP 8.1 (во время выполнения), но не могу этого сделать. Я следую инструкции MSDN для доступа к SD-карте в WinRT. Мне нужен доступ к 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 по-прежнему нулевой. Как я могу получить путь и создать папку там?
1 ответ
С "externalDevices" вы запрашиваете все устройства хранения в вашем телефоне. Затем пытаюсь найти свой путь.
Вы должны найти путь к корневой папке sdcard, а не путь самой sdcard.
"sdCard.path" будет работать.
Изменить после комментария Субхи:
Предполагая, что Съемное хранилище объявлено в 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;
}