最近使ったファイルやフォルダーの追跡
重要な API
ユーザーが頻繁にアクセスするファイルを追跡するには、そのファイルを最近使ったアプリの一覧 (MRU) に追加します。 プラットフォームは、最後にアクセスされた時期に基づいて項目を並べ替え、リストの 25 項目の制限に達した場合に最も古い項目を削除することによって、MRU を管理します。 すべてのアプリにはそれぞれに専用の MRU があります。
お使いのアプリの MRU は、静的な StorageApplicationPermissions.MostRecentlyUsedList プロパティから取得する StorageItemMostRecentlyUsedList クラスによって表されます。 MRU の項目は IStorageItem オブジェクトとして格納されます。つまり、StorageFile オブジェクト (ファイルを表すオブジェクト) と StorageFolder オブジェクト (フォルダーを表すオブジェクト) は、どちらも MRU に追加できます。
Note
完全なサンプルについては、ファイル ピッカーのサンプルとファイル アクセスのサンプルに関するページをご覧ください。
前提条件
ユニバーサル Windows プラットフォーム (UWP) アプリの非同期プログラミングについての理解
C# や Visual Basic での非同期アプリの作成方法については、「C# または Visual Basic での非同期 API の呼び出し」をご覧ください。 C++ での非同期アプリの作成方法については、「C++ での非同期プログラミング」をご覧ください。
場所へのアクセス許可
「ファイル アクセス許可」をご覧ください。
-
ユーザーは同じファイルを何度も選ぶ傾向にあります。
MRU に選んだファイルを追加する
ユーザーは同じファイルを繰り返し選ぶ傾向にあります。 そのため、選んだファイルはできるだけ早くアプリの MRU に追加することを検討してください。 ここではその方法を説明します。
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync(); var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList; string mruToken = mru.Add(file, "profile pic");
StorageItemMostRecentlyUsedList.Add がオーバーロードされます。 この例では Add(IStorageItem, String) を使って、メタデータをファイルに関連付けられるようにしています。 メタデータを設定すると、その項目の目的 ("プロファイル画像" など) を記録できます。 メタデータなしで MRU にファイルを追加するには、Add(IStorageItem) を呼び出します。 MRU に項目を追加すると、項目を取得するときに使われる一意に識別するための文字列であるトークンが返されます。
ヒント
項目を MRU から取得するにはそのトークンが必要であるため、どこかに保存しておいてください。 アプリ データの詳細については、「アプリケーション データの管理」をご覧ください。
トークンを使って MRU から項目を取得する
取得する項目に最適な取得メソッドを使います。
- ファイルを StorageFile として取得するには GetFileAsync を使います。
- フォルダーを StorageFolder として取得するには GetFolderAsync を使います。
- ファイルかフォルダーを表す汎用の IStorageItem を取得するには GetItemAsync を使います。
先ほど追加したファイルを取得する方法は次のとおりです。
StorageFile retrievedFile = await mru.GetFileAsync(mruToken);
すべてのエントリを反復処理してトークンを取得した後に項目を取得する方法は次のとおりです。
foreach (Windows.Storage.AccessCache.AccessListEntry entry in mru.Entries)
{
string mruToken = entry.Token;
string mruMetadata = entry.Metadata;
Windows.Storage.IStorageItem item = await mru.GetItemAsync(mruToken);
// The type of item will tell you whether it's a file or a folder.
}
AccessListEntryView を使うと MRU 内のエントリを反復処理できます。 これらのエントリは、項目のトークンとメタデータが格納された AccessListEntry 構造体です。
空きのない MRU から項目を削除する
MRU の上限である 25 項目に達している場合、新しい項目を追加しようとすると、最後にアクセスしてからの経過時間が最も長い項目が自動的に削除されます。 そのため、新しい項目を追加する前に項目を削除する必要はありません。
後でアクセスする一覧
アプリには MRU のほか、後でアクセスする一覧もあります。 ファイルやフォルダーを選ぶことで、ユーザーはアプリがアクセスできない可能性がある項目にアクセス許可を付与します。 これらの項目を後でアクセスする一覧に追加すると、後にそれらの項目にアプリがアクセスする場合に備えてアクセス許可が保持されます。 お使いのアプリの、後でアクセスする一覧は、静的な StorageApplicationPermissions.FutureAccessList プロパティから取得する StorageItemAccessList クラスによって表されます。
ユーザーが項目を選ぶ際には、MRU のほか、後でアクセスする一覧にも追加することを検討してください。
- FutureAccessList は最大 1,000 項目を保持できます。 ファイル以外にもフォルダーを保持できるため、大量のフォルダーがあることにご注意ください。
- プラットフォームによって FutureAccessList から項目が削除されることはありません。 項目の数が上限の 1,000 に到達した場合、Remove メソッドで空きを確保するまで項目を追加できません。