StorageApplicationPermissions ve WinRT

Windows 8 a Windows Phone 8.1 mají z důvodu maximalizace bezpečnosti velmi omezené API na přístup k souborům. Po nastavení některých Capabilities aplikace v jejím manifestu můžete sice přistupovat k několika základním pseudo-složkám – tedy knihovnám Obrázky, Hudba a Videa (plus enterprise aplikace na Windows 8 k Dokumentům), ale přístup k dalším složkám a souborům je již komplikovaný. Na záchranu ale přichází třída StorageApplicationPermissions .

 K čemu to je dobré?

Třída StorageApplicationPermissions obsahuje dvě užitečné vlastnosti: FutureAccessList a MostRecentlyUsedList . První z nich umožňuje “uložit” soubor či složku, ke které již jste získali přístup (např. díky svolení uživatele přes FileOpenPicker a FolderPicker) a vygenerovat pro ni unikátní klíč, kterým danou položku můžete kdykoliv v budoucnosti znovu získat. Takto dostáváte opravdu časově neomezený přístup a to až k 1 000 různým souborům a složkám s tím, že je však nutné se o tento seznam starat a nepoužívané záznamy ručně mazat. MostRecentlyUsedList funguje na úplně stejném principu, ale je limitován na 25 položek, o které se však plně stará (dokonce i automaticky udržuje odkaz ve chvíli, kdy se poloha odkazovaného souboru změní – např. přesunutím na jiné místo na disku). Po překročení limitu 25 souborů nejstarší přidanou smaže ze seznamu.

Jak na to?

Je to velmi jednoduché! Ukážeme si to na příkladu FutureAccessList , pro seznam naposledy použitých je vše identické.

Pro přidání nového souboru nebo složky zavoláme metodu Add :

Prvním parametrem je ukládaná složka nebo soubor a druhým, nepovinným parametrem je string s doplňujícími informacemi pro vaši potřebu.

Důležitý krok, který nyní musíte provést, je uložit si získaný string token do nějakého persistentního úložiště – např. do souboru nebo do databáze.

Právě přes tento token můžete soubor ze seznamu znovu získat:

Vrácený objekt je typu IStorageItem , který můžete přetypovat na StorageFolder nebo StorageFile dle potřeby. Pro zrychlení celého procesu můžete také použít přímo metody GetFileAsync nebo GetFolderAsync , které vrací právě tyto konkrétní typy. A jak již z názvů metod je vidět, vše probíhá přes moderní asynchronní syntaxi.

Důležité upozornění – stejně jako většina ostatních metod, které ve WinRT pracují se soubory je i v tomto případě nutné obalit volání Get metod blokem try-catch , protože v případě, že v seznamu není nalezen zadaný token, je vyhozena běhová výjimka.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*