Опубликован: 15.05.2013 | Доступ: свободный | Студентов: 265 / 10 | Длительность: 24:25:00
Специальности: Системный архитектор
Лекция 3:

Объявления в манифесте

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Аннотация: Превращение приложения в поставщика для средства выбора файлов.

Для того, чтобы сделать приложение поставщиком для средства выбора файлов, начинают – с чего же еще! – с добавления соответствующего объявления в манифест. В данном случае применимы три объявления: Средство выбора файлов для открытия (File Open Picker), Средство выбора файлов для сохранения (File Save Picker) и Средство обновления кэшированных файлов (Cached File Updater), как показано ниже, на примере окна редактора манифеста в Visual Studio. Каждое из этих объявлений можно сделать один раз в пределах одного приложения.


Объявления Средство выбора файлов для открытия (File Open Picker) и Средство выбора файлов для сохранения (File Save Picker) это то, что делает приложение-поставщика доступным в диалоговом окне, запущенном с помощью Windows.Storage.Pickers.FileOpenPicker и API FileSavePicker. Вызывающее приложение в обоих случаях ничего не знает о приложении, которое может быть запущено – всё взаимодействие между средством выбора файлов и поставщиком происходит с помощью контракта, и брокер контракта ответственен, во-первых, за отображение интерфейса, посредством которого можно выбрать объект, и, во-вторых, за возвращение объекта StorageFile для выбранного элемента.

И для контракта Средство выбора файлов для открытия (File Open Picker), и для контракта Средство выбора файлов для сохранения (File Save Picker), приложение-поставщик отражает в манифесте типы файлов, которые оно может обслуживать. Это выполняется с помощью кнопки Добавить (Add New) на нижеприведенном изображении. Затем средство выбора файлов делает приложение доступным для выбора только тогда, когда вызывающее приложение сообщает о подходящих типах файлов. Параметр Поддерживает все типы файлов (Supports Any File Type), который вы здесь видите позволяет приложению всегда появляться в списке, но это подходит только для приложений, наподобие SkyDrive, которые предоставляют доступ к некоему универсальному хранилищу файлов. Приложения, которые работают лишь со специфическими типами файлов, следует заявлять лишь об этих типах.


Приложение-поставщик содержит разные описания Начальной страницы (Start Page) для контрактов открытия и сохранения – это различные и независимые операции. И в том, и в другом случаях, как мы видели для других контрактов, это те страницы, которые средство выбора файлов загружает, когда пользователь выбирает приложение-поставщик. Как и в случае с целевым приложением для контракта Общий доступ, эти страницы обычно независимы от основного приложения и имеют собственный скриптовый контекст и обработчики активации, как мы увидим в следующем разделе. (Опять же, параметры Исполняемый файл (Executable) и Точка входа (Entry point) предназначены для других языков).

Вы можете задаться вопросом: почему контракты открытия и сохранения файлов разделены? Разве большинство приложений не реализуют обе функции? Не обязательно. Если вы создаёте приложение-поставщик для веб-сервиса, который, фактически, предоставляет данные только для чтения (наподобие изображений в результатах, полученных от поисковой системы), вы можете обслуживать лишь открытие файлов. Если сервис поддерживает создание новых файлов и обновление существующих файлов, как обычно делают сервисы по управлению фотографиями или документами, тогда вам так же нужно обрабатывать сохранение файлов. Возможен и сценарий, где поставщик обслуживает лишь операции сохранения файлов, такие, как запись данных в сервис общего доступа. Коротко говоря, Windows не может предположить того, какова природа источников данных, с которыми будут работать приложения-поставщики, поэтому данные два контракта разделены.

Так как следующий большой раздел данной лекции посвящен контракту Средство обновления кэшированных файлов (Cached File Updater), хорошо бы знать, как он соотносится с другими. Этот контракт позволяет приложению-поставщику синхронизировать локальные и удалённые копии файла, обычно подписываясь на уведомления об изменении или доступе к этим файлам и управляя ими. Это обычно используется для приложений, которые представляют хранилище файлов, в котором пользователь часто открывает и сохраняет файлы, наподобие SkyDrive или приложения баз данных. На самом деле, это сервисы двусторонней привязки данных для файлов, где и локальная и удалённая копии могут быть обновлены независимо. В итоге, эта возможность реализуется совместно с контрактами средств выбора файлов для приложения-поставщика.

Совет. Как упомянуто ранее материал "Общий доступ к данным и обмен данными" (http://msdn.microsoft.com/library/windows/apps/hh464923.aspx ) в Центре разработчиков Windows имеет некоторые полезные руководства о том, когда приложения могут быть поставщиками для контракта средства сохранения файлов и когда лучше подходит их настройка в виде целевых приложений общего доступа.

Активация поставщика средства выбора файла

Демонстрация контракта поставщика средства выбор файла – для открытия и сохранения – находится в примере "Контракт Средство выбора файла" (http://code.msdn.microsoft.com/windowsapps/File-picker-app-extension-0cb95155 ), который я, для ясности, буду упоминать как пример поставщика. Декларация и того и другого включена в манифест, с параметром Поддерживает все типы файлов (Supports Any File Type), в итоге, приложение из примера будет перечислена вместе с другими приложениями при всех вызовах средства выбора файла, как показано здесь:


При активации будет загружена начальная страница, указанная в манифесте для соответствующего контракта (открытия или сохранения). Это страницы fileOpenPicker.html и fileSavePicker.html, которые можно найти в корневом разделе проекта. Обе эти страницы загружаются независимо от основного приложения и выглядят так, как показано на рис. 3.1. и рис. 3.2. Обратите внимание на то, что заголовок приложения и цветовая схема определены параметрами закладки Интерфейс приложения (Application UI) в манифесте приложения-поставщика. В частности, текст берется из поля Отображаемое имя (Display Name), а цвета берутся из параметров Текст переднего плана (Foreground Text) и Цвет фона (Background Color) из набора параметров Плитка (Tile), как показано на рис. 3.3. Отметим, что система автоматически добавляет стрелку, направленную вниз после заголовка на рис. 3.1 и рис. 3.2, с его помощью пользователь может выбрать другое расположение или приложение-поставщик.

Интерфейс открытия файла, предоставляемый примером

Рис. 3.1. Интерфейс открытия файла, предоставляемый примером
Интерфейс сохранения файла, предоставленный примером

Рис. 3.2. Интерфейс сохранения файла, предоставленный примером
Установки на закладке Интерфейс приложения (Application UI) в манифесте, которые влияют на внешний вид окон средств открытия и сохранения файлов приложения-поставщика. Серые полосы в изображении представляют собой другие поля, которые я скрыл для краткости

Рис. 3.3. Установки на закладке Интерфейс приложения (Application UI) в манифесте, которые влияют на внешний вид окон средств открытия и сохранения файлов приложения-поставщика. Серые полосы в изображении представляют собой другие поля, которые я скрыл для краткости

Когда вы впервые запустите этот пример, вы не увидите ни одной из этих страниц. Вместо этого вы увидите страницу, с которой вы можете запустить средство открытия или сохранения файлов и выбрать это приложение в качестве поставщика. Вы можете сделать это, если хотите, но я рекомендую использовать другое приложение для запуска средств работы с файлами, таким образом мы может быть уверены в том, какое приложение какую роль играет. Для этой цели вы можете использовать пример "Средство выбора файлов" (http://code.msdn.microsoft.com/windowsapps/File-picker-sample-9f294cba ) (в качестве приложения-потребителя). Вы даже можете использовать что-то вроде приложения Windows 8 Music (Музыка), команда Open File (Открыть файл) на его панели приложения вызовет средство выбора файлов, в интерфейсе которого будет присутствовать и наш пример.

Что бы вы ни выбрали, важная часть примера поставщика – это его раздельные страницы для обслуживания контрактов, то есть, повторюсь, fileOpenPicker.html и fileSavePicker.html. В первом случае, код содержится в js/fileOpenPicker.js, где мы можем обработчик события activated с видом активации fileOpenPicker:

function activated(eventObject) {
if (eventObject.detail.kind ===
Windows.ApplicationModel.Activation.ActivationKind.fileOpenPicker) {
fileOpenPickerUI = eventObject.detail.fileOpenPickerUI;
eventObject.setPromise(WinJS.UI.processAll().then(function () {
// Перемещение на страницу сценария...
}));
}
}
      

Здесь eventObject.detail – это объект WebUIFileOpenPickerActivatedEventArgs (http://msdn.microsoft.com/library/windows/apps/windows.ui.webui.webuifileopenpickeractivatedeventargs.aspx ), свойство fileOpenPickerUI которого (объект Windows.Storage.Pickers.Providers.FileOpenPickerUI (http://msdn.microsoft.com/library/windows/apps/windows.storage.pickers.provider.fileopenpickerui.aspx )) предоставляет средства для выполнения обязанностей поставщика при обслуживании контракта.

Во втором случае код находится в js/fileSavePicker.js, с видом активации fileSavePicker:

function activated(eventObject) {
if (eventObject.detail.kind ===
Windows.ApplicationModel.Activation.ActivationKind.fileSavePicker) {
fileSavePickerUI = eventObject.detail.fileSavePickerUI;

eventObject.setPromise(WinJS.UI.processAll().then(function () {
// Перемещение на страницу сценария
}));
}
}
      

Здесь eventObject.detail – это объект WebUIFileSavePickerActivatedEventArgs (http://msdn.microsoft.com/library/windows/apps/windows.ui.webui.webuifilesavepickeractivatedeventargs.aspx ). Как и в случае с контрактом открытия, его свойство fileSavePickerUI (объект Windows.Storage.Pickers.Providers.FileSavePickerUI (http://msdn.microsoft.com/library/windows/apps/windows.storage.pickers.provider.filesavepickerui.aspx )) предоставляет средства для выполнения обязаностей поставщика при обслуживании контракта.

И в случае активации для открытия файла, и в случае активации для сохранения, содержимое начальной страницы контракта отображается внутри области, сверху и снизу которой расположены панели, предоставленные системой. Если содержимое страницы окажется больше, чем предоставленное пространство, появятся полосы прокрутки, но только в этой области – верхняя и нижняя полосы всегда будут оставаться на одном и том же месте. В обоих случаях WinRT так же предоставляет обычные средства, используемые при активации, такие, как свойства splashScreen и previousExecutionState, подобное мы видели в Главе 3 курса "Введение в разработку приложений для Windows 8 с использованием HTML, CSS и JavaScript", что означает, что вам следует перезагрузить необходимое состояние сеанса и использовать, при необходимости, расширенный экран-заставку.

Однако, гораздо интереснее – это взаимодействие, характерное для контрактов, которое представлено в различных сценариях для этих страниц (как вы можете видеть на рис. 3.1. и рис. 3.2.). Взглянем на каждый из них.

Примечание. Для того, чтобы узнать подробности по проектированию опыта взаимодействия пользователя со средством выбора файлов, обратитесь к материалу "Руководство по средствам выбора файлов) (http://msdn.microsoft.com/library/windows/apps/hh465182.aspx ).

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >