Вправа 2

Для розробки під Windows вам знадобитися наступне ПО:

Безкоштовна версія Windows 10

Після оновлення ви безкоштовно отримуєте Windows 10 на свій пристрій.

Безкоштовна версія Visual Studio, що дозволяє створювати додатки для платформи Microsoft Azure.

SDKs і доп. інструменти

Інструменти розробки додатків для платформи Microsoft Azure.

У цій вправі ми розповімо про те, як запускати ваш додаток для відкриття файлу, якщо цей процес ініційований іншим додатком. Ця функція називається зіставленням файлів: додаток оголошує розширення файлу для обробки, і на основі зазначеного зіставлення ОС перенаправляє запит в додаток.

Завдання 1. Реєстрація зіставлень файлів

Аналогічно попередній вправі, необхідно оголосити підтримуване розширення файлу. На цьому практичному занятті ми зіставимо додаток ContosoCookbook з розширеннями файлів .recipe і .rcp. Перш за все, і це найголовніше, необхідно відповідним чином змінити маніфест додатка.

Примітка. У Windows Phone 8 можна відкривати файли з різних місць розташування. Якщо додаток має відкривати файли з зовнішнього сховища (наприклад, з карти SD), необхідно зареєструвати тип вмісту (ContentType) і зіставити його з типом файлів (FileType), наприклад:
.recipe.

Кореневий елемент нової конфігурації - зіставлення типу файлу FileTypeAssociation, воно повинно бути прямим дочірнім елементом елемента Extensions (тут не показано). Цей елемент містить зіставлення типів файлів програми. В елементі SupportedFileTypes можна оголосити до 20 розширень файлів і призначити елемент FileType для кожного розширення. Елемент FileTypeAssociation описує набір файлових розширень з одним типом вмісту і значком логотипу.

  • невеликий. 33 х 33, використовується у вкладеннях в електронну пошту;
  • середній. 69 х 69, використовується в уявленнях списку концентраторів Office;
  • великий. 176 х 176, використовується в завантаженнях веб-браузера.
  1. У наведеному нижче визначенні використовуються зображення логотипу та обов'язкові розширення файлів, описані в попередньому прикладі.

    Примітка. Подібно схемами URI, деякі файлові розширення резервуються і зіставляються операційною системою і вбудованими додатками. Повний список зарезервованих файлових розширень наведено в документації MSDN.

    Завдання 2. Налаштування кошти зіставлення URI для зіставлень файлів

    У цьому завданні ми налаштуємо засіб зіставлення URI так, щоб воно ідентифікувало запит на зіставлення файлів і перенаправляє цей запит на відповідну сторінку додатка ContosoCookbook. Крім того, ми додамо фрагмент коду, який зчитує вміст файлу і відображає потрібний рецепт.

    1. У браузері рішень розгорніть папку Common (Загальні) і відкрийте файл CookbookUriMapper.cs.
    2. Додайте наступні члени даних в клас 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 являє стандартне системне діалогове вікно (див. Зображення нижче).

    Вправа 2

    Мал. 7.
    Системне діалогове вікно для пошуку потрібного додатка

    Примітка. Можна налаштувати обліковий запис електронної пошти в емулятор Windows Phone і отримувати електронні листи, однак для цього доведеться виконати безліч операцій по налаштуванню. Ми не будемо розглядати це в даному занятті.

    • Завантаження файлу в веб-браузері. Після скачування файлу в веб-браузері і клацання логотипу (великого розміру) запускається пошук і здійснюється перехід до зіставлення файлів.


    Примітка. Цей метод досить просунутий і вимагає складної настройки, і ми не будемо детально обговорювати його на цьому практичному занятті.

    • Ініціювання навігації по зіставлень файлів з стороннього допоміжного додатки. В ході даного практичного заняття ми будемо вивчати тільки цей підхід.

    Щоб налаштувати тестування зіставлень файлів за допомогою допоміжного додатки, виконайте наступні дії:

    1. Створіть новий додаток Windows Phone.
    2. Ініціювати навігацію по зіставлень файлів можна тільки в тому випадку, якщо програма має файл в ізольованому сховищі. Додайте в додаток новий файл. Вміст файлу, що підходить для додатка ContosoCookbook, має виглядати наступним чином:

    Переконайтеся, що файл називається sample.rcp (або .recipe - в цьому випадку необхідно упевнитися, що в методі WriteFiles нижче використовується нова назва).

  2. Для включення файлу в пакет додатків клацніть файл правою кнопкою миші в браузері рішень і виберіть Properties (Властивості).
  3. Змініть дію побудови на Content (Вміст).
  4. Додайте кнопку для завантаження і запуску файлу.
  5. Додайте наступний код в обробник події натискання кнопки:

Цей код викликає метод WriteFiles, який ініціалізує приклад файлу, а потім запускає навігацію по додатках за допомогою описаного вище методу LaunchFileAsync.

7. Додайте метод WriteFiles:

Цей метод відкриває вбудований файл рецепта і копіює його в локальну папку програми, щоб використовувати його для запуску зіставлень файлів.

8. Запустіть новий додаток, а потім натисніть кнопку. Додаток ContosoCookbook має запуститися і відобразити рецепт.

9. На цьому вправа і практичне заняття завершено.

На цьому занятті ми розглянули дії, які слід виконати для зіставлення файлів і імен схем URI в додатку Windows Phone 8.

Для цього необхідно зареєструвати зіставлення в файлі маніфесту додатки, реалізувати клас кошти зіставлення URI для фільтрації і обробки запуску додатків, додати можливість завантаження даних з файлів і вилучення параметрів з URI.

Тепер ви навчилися створювати додаток, що використовує зіставлення файлів і імен схем URI, щоб обмінюватися даними з іншими додатками і розширювати можливості взаємодії.