次の方法で共有


最近使用したファイルとフォルダーを追跡する

重要な API

ユーザーが頻繁にアクセスするファイルを追跡するには、アプリの最近使用したリスト (MRU) にファイルを追加します。 プラットフォームは、最後にアクセスされた日時に基づいて項目を並べ替え、リストの 25 項目の制限に達したときに最も古い項目を削除することで、MRU を管理します。 すべてのアプリに独自の MRU があります。

アプリの MRU は、StorageItemMostRecentlyUsedList クラスで表されており、このクラスは静的なプロパティ StorageApplicationPermissions.MostRecentlyUsedList から取得できます。 MRU 項目は IStorageItem オブジェクト 格納されるため、StorageFile オブジェクト (ファイルを表す) と StorageFolder オブジェクト (フォルダーを表す) の両方を MRU に追加できます。

 完全なサンプルについては、ファイル ピッカーのサンプルファイル アクセスのサンプルを参照してください。

[前提条件]

  • ユニバーサル 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) を使用して、メタデータをファイルに関連付けることができます。 メタデータを設定すると、"profile pic" などのアイテムの目的を記録できます。 Add(IStorageItem)を呼び出すことによって、メタデータなしで MRU にファイルを追加することもできます。 MRU に項目を追加すると、メソッドはトークンと呼ばれる一意の識別文字列を返します。トークンは、アイテムの取得に使用されます。

ヒント

MRU から項目を取得するにはトークンが必要になるため、どこかに保持します。 アプリ データの詳細については、「アプリケーション データの管理」を参照してください。

トークンを使用して MRU から項目を取得する

取得する項目に最も適した取得方法を使用します。

  • GetFileAsyncを使用して、ファイル StorageFile として取得します。
  • GetFolderAsyncを使用して、フォルダー StorageFolder として取得します。
  • 汎用 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 と同様に、アプリには将来のアクセス リストもあります。 ファイルとフォルダーを選択することで、ユーザーは、アクセスできない可能性があるアイテムにアクセスするためのアクセス許可をアプリに付与します。 これらの項目を将来のアクセスリストに追加した場合、アプリが後でそれらの項目に再度アクセスする場合は、そのアクセス許可が保持されます。 アプリの future-access リストは、静的な StorageApplicationPermissions.FutureAccessList プロパティから取得する StorageItemAccessList クラスによって表されます。

ユーザーが項目を選択した場合は、将来のアクセス リストと MRU に項目を追加することを検討してください。

  • FutureAccessList は、最大 1,000 個のアイテムを保持できます。 覚えておいてください。フォルダーだけでなくファイルも保持できるため、多くのフォルダーになります。
  • プラットフォームは、あなたのために FutureAccessList から項目を削除することはありません。 1000 項目の制限に達すると、Remove メソッドを使用して余裕を持たなければ、別の項目を追加することはできません。