0

WP 8.1 (ランタイム) SD カード アクセスと非常に混同しています。WP 8.1 (Runtime) Sd Card でフォルダーを作成しようとしていますが、作成できません。WinRTでSDカードにアクセスするには、 MSDNチュートリアルに従っています。アプリのバックアップ フォルダとログ フォルダを保存するには、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は私にとって非常に混乱しています。多くの記事を読みましたが、まだ完全には解明されていません。

基本的に、アプリ名フォルダーの下に 2 つのフォルダーと 1 つのファイルが必要です。

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 パスはまだ null です。パスを取得してそこにフォルダーを作成するにはどうすればよいですか?

4

1 に答える 1

1

「externalDevices」を使用すると、携帯電話のすべてのストレージ デバイスを照会しています。次に、そのパスを見つけようとします。

SD カード自体のパスではなく、SD カードのルート フォルダーのパスを見つける必要があります。

「sdCard.path」が機能します。

Subha のコメントの後に編集:リムーバブル ストレージが appxmanifest で宣言され、エミュレーターにエミュレートされた sdcard が挿入されていると仮定すると (チュートリアルで説明されているように、ストレージ センスはポップアップを表示しましたか?)、次のように動作するはずです
。 私はタスクを使用していないことに注意してください。

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 に答える