重要的應用程式介面
將檔案新增至您應用程式最近使用的清單(MRU),以追蹤使用者經常存取的檔案。 平臺會根據上次存取項目的時間排序專案,並在達到清單的 25 個專案限制時移除最舊的專案,以為您管理 MRU。 所有應用程式都有自己的 MRU。
應用程式的 MRU 是由 StorageItemMostRecentlyUsedList 類別表示,您可以從 StorageApplicationPermissions.MostRecentlyUsedList 靜態屬性取得。 MRU 專案會儲存為 IStorageItem 物件,因此可以同時 StorageFile 物件(代表檔案)和 StorageFolder 物件(代表資料夾)新增至 MRU。
先決條件
瞭解通用 Windows 平臺 (UWP) app 的異步程式設計
您可以瞭解如何在 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), 以便將元數據與檔案產生關聯。 設定元數據可讓您記錄項目的用途,例如「個人資料圖片」。 您也可以呼叫 Add(IStorageItem),將檔案新增至 MRU 而不需元數據。 當您將專案新增至 MRU 時,方法會傳回唯一識別的字串,稱為令牌,用來擷取專案。
小提示
您需要令牌才能從 MRU 擷取項目,因此請將它儲存在某個地方。 如需應用程式數據的詳細資訊,請參閱 管理應用程式數據。
使用令牌從 MRU 取得項目
使用最適合您想要取回的項目的檢索方法。
- 使用 GetFileAsync,將檔案擷取為 StorageFile。
- 使用 GetFolderAsync,將資料夾擷取為 StorageFolder。
- 使用 GetItemAsync來擷取一般的 IStorageItem ,其可以代表檔案或資料夾。
以下說明如何取回我們剛才新增的檔案。
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 移除項目
當 MRU 的 25 個專案限制達到且您嘗試新增專案時,系統會自動移除存取最長時間的專案。 因此,您在新增項目前,永遠不需要先移除任何項目。
未來存取清單
除了最近使用清單(MRU)之外,您的應用程式也有未來的存取清單。 藉由挑選檔案和資料夾,您的使用者授予應用程式許可權,以存取原本可能無法存取的項目。 如果您將這些專案新增至未來的存取清單,當您的應用程式稍後想要再次存取這些專案時,您將會保留該許可權。 您從靜態 StorageApplicationPermissions.FutureAccessList 屬性取得的 StorageItemAccessList 類別代表應用程式的未來存取清單。
當使用者挑選專案時,請考慮將其新增至未來的存取清單以及 MRU。
- FutureAccessList 最多可以保存 1000 個項目。 請記住:它可以保存資料夾和檔案,因此有很多資料夾。
- 平台絕不會為您移除 FutureAccessList 中的項目。 當您達到 1000 個專案的限制時,除非使用 Remove 方法騰出空間,否則無法新增其他專案。