2

私はWinRTで作業していますが、行き詰まっています。

メディアライブラリ機能を備えた音楽プレーヤーを書いています。音楽(アーティストなど)に関する情報をSQLiteデータベースに保存しています。私は、ユーザーが自分の音楽を、すべてが「音楽」ライブラリにある必要があるWindowsの方法ではなく、好きな場所に保持できるようにしたかったのです。

ユーザーは、フォルダーピッカーを使用してフォルダー内に音楽を追加できます。私が抱えている問題はこれです:アプリケーションの再起動後など、後でこれらのファイルにアクセスするにはどうすればよいですか?

常に「アクセスが拒否されました」というエラーが発生するため、パスを保持しても機能しません。ファイルにアクセスできるのは、フォルダーの参照から取得したStorageFileオブジェクトを使用する場合のみです。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

すでに与えられたコメントのように、Windows.Storage.AccessCache(http://msdn.microsoft.com/en-us/library/windows/apps/br230566.aspx)は、これに使用する必要のあるAPIです。ただし、個々のStorageFileへのアクセスを保存する代わりに、フォルダーピッカーを使用し、代わりにStorageFolderオブジェクトのアクセス許可を保存します(APIは両方で機能します)。フォルダのアイテム数が1000に達する可能性はほとんどありません。

于 2012-11-22T20:34:55.370 に答える
0

Windowsランタイムアプリはサンドボックス化されています。任意のフォルダの場所にアクセスする場合、ファイルピッカーを使用する必要があります。

于 2012-11-22T19:07:33.723 に答える
0

将来的にファイルにアクセスする

        string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFile);
        //save this key for access file later

        //Access file from saved key
        StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);

ファイルが多すぎる場合は、ファイルのStorageFolderを追加できます

        string key = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(storageFolder);
        StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(key);

次に、親のStorageFolderからStorageFilesを取得します

StorageFile childFile = await folder.GetFileAsync("filename");
于 2018-09-07T12:47:28.717 に答える