Вправа 2
Для розробки під Windows вам знадобитися наступне ПО:
Безкоштовна версія Windows 10
Після оновлення ви безкоштовно отримуєте Windows 10 на свій пристрій.
Безкоштовна версія Visual Studio, що дозволяє створювати додатки для платформи Microsoft Azure.
SDKs і доп. інструменти
Інструменти розробки додатків для платформи Microsoft Azure.
У цій вправі ми розповімо про те, як запускати ваш додаток для відкриття файлу, якщо цей процес ініційований іншим додатком. Ця функція називається зіставленням файлів: додаток оголошує розширення файлу для обробки, і на основі зазначеного зіставлення ОС перенаправляє запит в додаток.
Завдання 1. Реєстрація зіставлень файлів
Аналогічно попередній вправі, необхідно оголосити підтримуване розширення файлу. На цьому практичному занятті ми зіставимо додаток ContosoCookbook з розширеннями файлів .recipe і .rcp. Перш за все, і це найголовніше, необхідно відповідним чином змінити маніфест додатка.
Примітка. У Windows Phone 8 можна відкривати файли з різних місць розташування. Якщо додаток має відкривати файли з зовнішнього сховища (наприклад, з карти SD), необхідно зареєструвати тип вмісту (ContentType) і зіставити його з типом файлів (FileType), наприклад:
Кореневий елемент нової конфігурації - зіставлення типу файлу FileTypeAssociation, воно повинно бути прямим дочірнім елементом елемента Extensions (тут не показано). Цей елемент містить зіставлення типів файлів програми. В елементі SupportedFileTypes можна оголосити до 20 розширень файлів і призначити елемент FileType для кожного розширення. Елемент FileTypeAssociation описує набір файлових розширень з одним типом вмісту і значком логотипу.
- невеликий. 33 х 33, використовується у вкладеннях в електронну пошту;
- середній. 69 х 69, використовується в уявленнях списку концентраторів Office;
- великий. 176 х 176, використовується в завантаженнях веб-браузера.
-
У наведеному нижче визначенні використовуються зображення логотипу та обов'язкові розширення файлів, описані в попередньому прикладі.
Примітка. Подібно схемами URI, деякі файлові розширення резервуються і зіставляються операційною системою і вбудованими додатками. Повний список зарезервованих файлових розширень наведено в документації MSDN.
Завдання 2. Налаштування кошти зіставлення URI для зіставлень файлів
У цьому завданні ми налаштуємо засіб зіставлення URI так, щоб воно ідентифікувало запит на зіставлення файлів і перенаправляє цей запит на відповідну сторінку додатка ContosoCookbook. Крім того, ми додамо фрагмент коду, який зчитує вміст файлу і відображає потрібний рецепт.
- У браузері рішень розгорніть папку Common (Загальні) і відкрийте файл CookbookUriMapper.cs.
- Додайте наступні члени даних в клас CookbookUriMapper:
Цей шаблон визначає, чи є URI запитом на зіставлення типів файлів.
3. Знайдіть метод MapUri і додайте наступний код після оператора «tempUri = uri.ToString ()»:
Код перевіряє, чи представляє даний URI запит на зіставлення файлів, і викликає метод GetFileMappedUri для перенаправлення на відповідну сторінку додатка.
4. Додайте метод GetFileMappedUri в клас наступним чином:
Цей код перенаправляє запит на сторінку RecipeDetailPage.xaml, яка зчитує вміст файлу і відображає рецепт.
5. Відкрийте файл RecipeDetailPage.xaml.cs і додайте в початок файлу наступні оператори using:
6. Потім знайдіть метод OnNavigatedTo. він викликається, оскільки UriMapper перенаправив запит на цю сторінку. Замініть оператор «string UniqueId = NavigationContext.QueryString [" ID "]; »Наступним кодом:
У цьому коді використовується клас SharedStorageAccessManager з простору імен Windows.Phone.Storage, щоб витягувати ім'я файлу з токена, одержуваного додатком. Потім код копіює файл із загального розташування в локальне сховище додатки, звідки до нього може здійснюватися доступ.
Примітка. Необхідно скопіювати файл із загального системного розташування перед тим, як робити спробу доступу до файлу, який використовується системою, і запускати зіставлення файлів.
Файл копіюється в локальне сховище, потім код відкриває файл і завантажує його вміст. У додатку ContosoCookbook файл рецепта - це XML-файл такого формату:
Примітка. Формат файлу і його вміст визначаються виключно додатком. Додаток може використовувати зовсім інший формат файлів. Це означає, що завантажує код після копіювання файлу в локальне сховище буде відрізнятися від наведеного вище.
Додаток використовує класи LINQ to XML (XDocument і XName) для вилучення ідентифікатора рецепта з XML-файла. Виконавши витяг ідентифікатора, додаток продовжує роботу, як в попередній вправі.
Завдання 3. Тестування зіставлень файлів
Існує три способи протестувати зіставлення файлів.
- Надсилання електронної пошти з прикріпленим файлом. Наприклад, якщо до електронного повідомлення прикріплений PDF-файл, то користувач може клацнути маленький логотип PDF-файлу: буде ініційований пошук зіставлень файлів в системі. Потім користувач вибирає додаток для запуску (при наявності декількох доступних варіантів). Якщо є тільки одне зареєстроване додаток, воно запускається автоматично.
Якщо на пристрої немає доступних зареєстрованих додатків, ОС Windows Phone являє стандартне системне діалогове вікно (див. Зображення нижче).

Мал. 7.
Системне діалогове вікно для пошуку потрібного додаткаПримітка. Можна налаштувати обліковий запис електронної пошти в емулятор Windows Phone і отримувати електронні листи, однак для цього доведеться виконати безліч операцій по налаштуванню. Ми не будемо розглядати це в даному занятті.
- Завантаження файлу в веб-браузері. Після скачування файлу в веб-браузері і клацання логотипу (великого розміру) запускається пошук і здійснюється перехід до зіставлення файлів.
Примітка. Цей метод досить просунутий і вимагає складної настройки, і ми не будемо детально обговорювати його на цьому практичному занятті.- Ініціювання навігації по зіставлень файлів з стороннього допоміжного додатки. В ході даного практичного заняття ми будемо вивчати тільки цей підхід.
Щоб налаштувати тестування зіставлень файлів за допомогою допоміжного додатки, виконайте наступні дії:
- Створіть новий додаток Windows Phone.
- Ініціювати навігацію по зіставлень файлів можна тільки в тому випадку, якщо програма має файл в ізольованому сховищі. Додайте в додаток новий файл. Вміст файлу, що підходить для додатка ContosoCookbook, має виглядати наступним чином:
Переконайтеся, що файл називається sample.rcp (або .recipe - в цьому випадку необхідно упевнитися, що в методі WriteFiles нижче використовується нова назва).
- Для включення файлу в пакет додатків клацніть файл правою кнопкою миші в браузері рішень і виберіть Properties (Властивості).
- Змініть дію побудови на Content (Вміст).
- Додайте кнопку для завантаження і запуску файлу.
- Додайте наступний код в обробник події натискання кнопки:
Цей код викликає метод WriteFiles, який ініціалізує приклад файлу, а потім запускає навігацію по додатках за допомогою описаного вище методу LaunchFileAsync.
7. Додайте метод WriteFiles:
Цей метод відкриває вбудований файл рецепта і копіює його в локальну папку програми, щоб використовувати його для запуску зіставлень файлів.
8. Запустіть новий додаток, а потім натисніть кнопку. Додаток ContosoCookbook має запуститися і відобразити рецепт.
9. На цьому вправа і практичне заняття завершено.
На цьому занятті ми розглянули дії, які слід виконати для зіставлення файлів і імен схем URI в додатку Windows Phone 8.
Для цього необхідно зареєструвати зіставлення в файлі маніфесту додатки, реалізувати клас кошти зіставлення URI для фільтрації і обробки запуску додатків, додати можливість завантаження даних з файлів і вилучення параметрів з URI.
Тепер ви навчилися створювати додаток, що використовує зіставлення файлів і імен схем URI, щоб обмінюватися даними з іншими додатками і розширювати можливості взаємодії.