Как запустить приложение по умолчанию для файла (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Узнайте, как запускать приложение по умолчанию для файла. Многим приложениям необходимо работать с файлами, которые они не могут обрабатывать самостоятельно. Например, почтовые приложения получают файлы разных типов, и им требуется способ запуска этих файлов в обработчиках по умолчанию.
Далее показано, как использовать API Windows.System.Launcher, чтобы запустить обработчик по умолчанию для файла, который приложение не может обработать самостоятельно.
Инструкции
Этап 1: Получение файла
Сначала получите объект Windows.Storage.StorageFile для данного файла.
Если файл включен в пакет вашего приложения, можно использовать свойство Package.installedLocation для получения объекта Windows.Storage.StorageFolder и метод Windows.Storage.StorageFolder.getFileAsync для получения объекта StorageFile.
Если файл находится в известной папке, можно использовать свойства класса Windows.Storage.KnownFolders для получения StorageFolder и метод getFileAsync для получения объекта StorageFile.
Этап 2: Запуск файла
Windows предоставляет несколько вариантов для запуска обработчика файла по умолчанию. Они описаны на диаграмме ниже и в следующих разделах.
Вариант | Метод | Описание |
---|---|---|
Запуск по умолчанию | LaunchFileAsync(IStorageFile) | Запуск указанного файла с помощью обработчика по умолчанию. |
Запуск через пункт меню "Открыть с помощью" | LaunchFileAsync(IStorageFile, LauncherOptions) | Запуск указанного файла, позволяющий пользователю выбрать обработчик в диалоговом окне "Открыть с помощью". |
Запуск с помощью рекомендованного резервного приложения | LaunchFileAsync(IStorageFile, LauncherOptions) | Запуск указанного файла с помощью обработчика по умолчанию. Если в системе не установлен обработчик, следует порекомендовать пользователю приложение в Магазине. |
Запуск с использованием заданного представления оставшегося пространства | LaunchFileAsync(IStorageFile, LauncherOptions) (только Windows) | Запуск указанного файла с помощью обработчика по умолчанию. Укажите параметр, позволяющий остаться на экране после запуска, и запросите конкретный размер окна.
Windows 8.1: LauncherOptions.DesiredRemainingView не поддерживается до выпусков Windows 8.1 и Windows Server 2012 R2. Windows Phone: LauncherOptions.DesiredRemainingView не поддерживается для Windows Phone. |
Default launch
Чтобы запустить приложение по умолчанию, вызовите метод Windows.System.Launcher.launchFileAsync(IStorageFile). В следующем примере используется метод Windows.Storage.StorageFolder.getFileAsync для запуска файла изображения test.png, который включен в пакет приложения.
// Path to the file in the app package to launch
var imageFile = "images\\test.png";
// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
function (file) {
// Launch the retrieved file using the default app
Windows.System.Launcher.launchFileAsync(file).then(
function (success) {
if (success) {
// File launched
} else {
// File launch failed
}
});
});
Open with launch
Вызовите метод Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) с заданным для параметра LauncherOptions.displayApplicationPicker значением true, чтобы запустить приложение, которое пользователь выбирает в диалоговом окне Открыть с помощью.
Если пользователь хочет выбрать приложение для определенного файла, отличное от приложения по умолчанию, рекомендуется использовать диалоговое окно Открыть с помощью. Например, когда ваше приложение разрешает пользователю запускать файл изображения, по умолчанию наиболее вероятным обработчиком будет средство просмотра изображений. Иногда пользователю нужно не просто посмотреть изображение, но и отредактировать его. В таком случае используйте параметр Открыть с помощью наряду с альтернативной командой на панели приложения AppBar или в контекстном меню, чтобы пользователь мог вызвать диалоговое окно Открыть с помощью и выбрать приложение для редактирования.
// Path to the file in the app package to launch
var imageFile = "images\\test.png";
// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
function (file) {
// Set the show picker option
var options = new Windows.System.LauncherOptions();
options.displayApplicationPicker = true;
// Launch the retrieved file using the selected app
Windows.System.Launcher.launchFileAsync(file, options).then(
function (success) {
if (success) {
// File launched
} else {
// File launch failed
}
});
});
Launch with a recommended app fallback
В некоторых случаях у пользователя может быть не установлено приложение для обработки запускаемого файла. Тогда по умолчанию операционная система предоставит пользователю ссылку для поиска подходящего приложения в Магазине. Если вы при этом хотите порекомендовать пользователю конкретное приложение, вы можете передать рекомендацию вместе с запускаемым файлом. Для этого вызовите метод Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions), указав в качестве значения параметра LauncherOptions.preferredApplicationPackageFamilyName имя семейства пакета приложения Магазина, которое вы рекомендуете. Затем задайте для параметра LauncherOptions.preferredApplicationDisplayName имя этого приложения. Операционная система будет использовать эту информацию, чтобы заменить общий параметр (поиск приложения в Магазине) конкретным параметром (приобретение рекомендованного приложения в Магазине).
Примечание Чтобы рекомендовать приложение, необходимо настроить рекомендацию приложения в обоих этих параметрах. Настройка одного параметра без другого приведет к ошибке.
// Path to the file in the app package to launch
var imageFile = "images\\test.contoso";
// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
function (file) {
// Set the recommended app
var options = new Windows.System.LauncherOptions();
options.preferredApplicationPackageFamilyName = "Contoso.FileApp_8wknc82po1e";
options.preferredApplicationDisplayName = "Contoso File App";
// Launch the retrieved file pass in the recommended app
// in case the user has no apps installed to handle the file
Windows.System.Launcher.launchFileAsync(file, options).then(
function (success) {
if (success) {
// File launched
} else {
// File launch failed
}
});
});
Запуск с использованием требуемого представления оставшегося пространства (только Windows)
Исходные приложения, вызывающие LaunchFileAsync, могут запрашивать разрешение остаться на экране после запуска файла. По умолчанию Windows пытается поровну поделить все доступное пространство между исходным приложением и конечным приложением, обрабатывающим файл. Исходные приложения могут использовать свойство DesiredRemainingView для указания операционной системе, что для окна приложения требуется больше или меньше доступного пространства. При помощи DesiredRemainingView также можно указать, что исходному приложению не нужно оставаться на экране после запуска файла и что его пространство можно полностью занять конечным приложением. Это свойство указывает только предпочтительный размер окна для вызывающего приложения. Оно не задает условия для других приложений, которые могут находиться на экране в это же время.
Примечание Windows учитывает множество различных факторов при определении окончательного размера окна приложения, например предпочтения исходного приложения, количество приложений на экране, ориентацию экрана и т. д. Задав DesiredRemainingView, вы не гарантируете конкретного поведения окон для исходного приложения.
Windows 8.1: LauncherOptions.DesiredRemainingView не поддерживается до выхода Windows 8.1 и Windows Server 2012 R2.
Windows Phone: LauncherOptions.DesiredRemainingView не поддерживается для Windows Phone.
// Path to the file in the app package to launch
var imageFile = "images\\test.png";
// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).done(
function (file) {
// Set the desired remaining view
var options = new Windows.System.LauncherOptions();
options.desiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.useLess;
// Launch the retrieved file using the selected app
Windows.System.Launcher.launchFileAsync(file, options).done(
function (success) {
if (success) {
// File launched
} else {
// File launch failed
}
});
});
Замечания
Ваше приложение не может выбрать запускаемое приложение. Пользователь сам определяет, какое приложение запустить: приложение Магазина Windows или классическое.
При запуске файла ваше приложение должно быть приложением переднего плана, то есть быть видимым пользователю. Это требование обеспечивает контроль пользователя над ситуацией. Для соблюдения этого требования убедитесь, что все запуски файлов непосредственно связаны с пользовательским интерфейсом вашего приложения. Чтобы запустить файл, пользователь, скорее всего, должен выполнить какое-либо действие. Если вы попытаетесь запустить файл, когда приложение не находится на переднем плане, запуск завершится ошибкой и будет выполнен обратный вызов для ошибки.
Нельзя запускать типы файлов, содержащие код или сценарий, если они автоматически выполняются операционной системой, например файлы EXE, MSI и JS. Это ограничение защищает пользователей от потенциально вредоносных файлов, которые могут внести изменения в операционную систему. Вы можете использовать этот метод для запуска файлов, содержащих сценарий, если они выполняются приложением, которое изолирует этот сценарий. К таким файлам, например, относятся файлы типа DOCX. Приложения, подобные Microsoft Word, не позволяют сценариям в DOCX-файлах изменять операционную систему.
Если вы попытаетесь запустить файл ограниченного типа, запуск завершится ошибкой и будет выполнен обратный вызов для ошибки. Если ваше приложение обрабатывает разные типы файлов и вы считаете такую ошибку вероятной, то рекомендуется предоставить пользователю резервный вариант действий. Например, можно позволить пользователю сохранить файл на рабочем столе и открыть его с рабочего стола.
Полный пример
См. пример запуска сопоставления (Windows).
Связанные разделы
Задачи
Запуск приложения по умолчанию для универсального кода ресурса (URI)
Руководство
Руководство и контрольный список по типам файлов и универсальным кодам ресурсов (URI)
Ссылки