Cómo iniciar la aplicación predeterminada de un archivo (HTML)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
Aprende cómo iniciar la aplicación predeterminada de un archivo. Muchas aplicaciones necesitan funcionar con archivos que no pueden controlar. Por ejemplo, las aplicaciones de correo electrónico reciben una gran variedad de tipos de archivo y necesitan una forma de iniciar estos archivos en sus controladores predeterminados.
Los siguientes pasos te mostrarán cómo usar la API Windows.System.Launcher para iniciar el controlador predeterminado para un archivo que no puede controlar la aplicación.
Instrucciones
Paso 1: Obtén el archivo
Primero, obtén un objeto Windows.Storage.StorageFile para el archivo.
Si el archivo está incluido en el paquete de la aplicación, puedes usar la propiedad Package.installedLocation para obtener un objeto Windows.Storage.StorageFolder y el método Windows.Storage.StorageFolder.getFileAsync para obtener el método StorageFile.
Si el archivo está en una carpeta conocida, puedes usar las propiedades de la clase Windows.Storage.KnownFolders para obtener una StorageFolder y el método getFileAsync para obtener el objeto StorageFile.
Paso 2: Inicia el archivo
Windows proporciona varias opciones distintas para iniciar el controlador predeterminado de un archivo. Estas se describen en el siguiente gráfico y en las secciones a continuación.
Opción | Método | Descripción |
---|---|---|
Inicio predeterminado | LaunchFileAsync(IStorageFile) | Inicia el archivo especificado con el controlador predeterminado. |
Abrir con inicio | LaunchFileAsync(IStorageFile, LauncherOptions) | Inicia el archivo especificado dejando que el usuario elija el controlador mediante el cuadro de diálogo Abrir con. |
Iniciar con una reserva de aplicación recomendada | LaunchFileAsync(IStorageFile, LauncherOptions) | Inicia el archivo especificado con el controlador predeterminado. Si el sistema no tiene ningún controlador instalado, recomienda al usuario una aplicación de la tienda. |
Inicio con una vista deseada permanente | LaunchFileAsync(IStorageFile, LauncherOptions) (solo Windows) | Inicia el archivo especificado con el controlador predeterminado. Especifica una preferencia para que permanezca en la pantalla después de iniciar y solicitar un tamaño de ventana específico.
Windows 8.1: LauncherOptions.DesiredRemainingView no se admite hasta Windows 8.1 y Windows Server 2012 R2. Windows Phone: LauncherOptions.DesiredRemainingView no se admite para Windows Phone. |
Default launch
Llama al método Windows.System.Launcher.launchFileAsync(IStorageFile) para iniciar la aplicación predeterminada. En este ejemplo, se usa el método Windows.Storage.StorageFolder.getFileAsync para iniciar un archivo de imagen, test.png, incluido en el paquete de la aplicación.
// 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
Llama al método Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) con LauncherOptions.displayApplicationPicker establecido en true para iniciar la aplicación que el usuario seleccione en el cuadro de diálogo Abrir con.
Recomendamos que uses el cuadro de diálogo Abrir con, cuando el usuario quiera seleccionar una aplicación que no sea la aplicación predeterminada para un archivo en particular. Por ejemplo, si la aplicación permite al usuario iniciar un archivo de imagen, el controlador predeterminado probablemente sea una aplicación de visualización. A veces, es posible que el usuario quiera editar la imagen en lugar de verla. Usa la opción Abrir con junto con un comando alternativo de la barra de la aplicación o de un menú contextual, para permitir que el usuario abra el cuadro de diálogo Abrir con y selecciona la aplicación de edición en estos tipos de escenarios.
// 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
En algunos casos, el usuario podría no tener instalada una aplicación para administrar el archivo que estás iniciando. Si esto sucede, de manera predeterminada, el sistema operativo ofrece un vínculo al usuario para que busque una aplicación apropiada en la Tienda. Si quieres recomendar al usuario qué aplicación comprar en este escenario, debes pasar la recomendación junto con el archivo que estás iniciando. Para ello, llama al método Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) con LauncherOptions.preferredApplicationPackageFamilyName establecido con el nombre de familia de paquete correspondiente a la aplicación de la Tienda que quieras recomendar. Después establece LauncherOptions.preferredApplicationDisplayName en el nombre de esa aplicación. El sistema operativo usará esta información para reemplazar la opción general de buscar una aplicación por una opción específica para comprar la aplicación recomendada en la Tienda.
Nota Debes establecer estas dos opciones para recomendar una aplicación. Si se establece una, pero la otra no, se producirá un error.
// 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
}
});
});
Inicio con una vista deseada permanente (solo Windows)
Las aplicaciones de origen que llaman a LaunchFileAsync pueden solicitar que permanezcan en pantalla después de iniciarse un archivo. Windows intenta compartir de manera predeterminada todo el espacio disponible entre la aplicación de origen y la aplicación de destino que controla el archivo. Las aplicaciones de origen pueden usar la propiedad DesiredRemainingView para indicar al sistema operativo que prefieren que la ventana de la aplicación ocupe más o menos espacio del que hay disponible. DesiredRemainingView también se puede usar para indicar que la aplicación de origen no necesita permanecer en pantalla después del inicio de un archivo y puede sustituirse por completo por la aplicación de destino. Esta propiedad especifica únicamente el tamaño de ventana preferido de la aplicación que llama; no especifica el comportamiento de ninguna otra aplicación que también esté en pantalla al mismo tiempo.
Nota Windows tiene en cuenta diferentes factores a la hora de determinar el tamaño final de la ventana de la aplicación de origen, como por ejemplo, la preferencia de la aplicación de origen, el número de aplicaciones en pantalla, la orientación de la pantalla, etc. Establecer DesiredRemainingView no garantiza un comportamiento de ventanas específico para la aplicación de origen.
Windows 8.1: LauncherOptions.DesiredRemainingView no se admite hasta Windows 8.1 y Windows Server 2012 R2.
Windows Phone: LauncherOptions.DesiredRemainingView no se admite para 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
}
});
});
Observaciones
La aplicación no puede seleccionar qué aplicación se inicia, sino que es el usuario el que determina la aplicación que se inicia. El usuario puede optar entre una aplicación de la Tienda Windows o una aplicación de escritorio.
Cuando inicies un archivo, tu aplicación debe ser la aplicación en primer plano, es decir, visible para el usuario. Este requisito permite asegurar que el usuario permanezca en control. Para cumplir este requisito, asegúrate de enlazar todos los inicios de archivo directamente a la interfaz de usuario de la aplicación. Lo más probable es que el usuario tenga que realizar siempre alguna acción para iniciar el archivo. Si intentas iniciar un archivo y tu aplicación no está en primer plano, se producirá un error en el inicio y se invocará a la devolución de llamada de error.
No puedes iniciar tipos de archivo que contengan código o script, como archivos .exe, .msi o .js, si el sistema operativo los ejecuta automáticamente. Esta restricción protege a los usuarios contra archivos potencialmente malintencionados que podrían modificar el sistema. Puedes usar este método para iniciar tipos de archivo, como archivos .docx, que pueden contener script, si los ejecuta una aplicación que aísla el script. Las aplicaciones como Microsoft Word impiden que el script de los archivos .docx modifique el sistema.
Si intentas iniciar un tipo de archivo restringido, se producirá un error en el inicio y se invocará a la devolución de llamada de error. Si tu aplicación controla una gran cantidad de tipos de archivo y esperas que este error pueda detectarse, conviene que proveas al usuario de una experiencia de reserva. Por ejemplo, puedes ofrecerle la posibilidad de guardar el archivo en el escritorio para poder abrirlo desde allí.
Ejemplo completo
Consulta el ejemplo de inicio por asociación (Windows).
Temas relacionados
Tareas
Cómo administrar la activación de archivos
Cómo iniciar la aplicación predeterminada de un URI
Directrices
Directrices y lista de comprobación de tipos de archivo y URI
Referencia