Compartir a través de


Cómo iniciar la aplicación predeterminada de un URI (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 a iniciar la aplicación predeterminada de un identificador de recursos uniforme (URI). Los URI te permiten iniciar otra aplicación en el sistema para realizar una tarea específica. Por ejemplo, si quieres permitir que el usuario envíe un correo electrónico a un contacto en tu aplicación, puedes usar el URI mailto: para iniciar la aplicación de correo electrónico predeterminado del usuario.

Los siguientes pasos te mostrarán cómo usar la API Windows.System.Launcher para iniciar el controlador predeterminado de un URI.

Instrucciones

Paso 1: Crear el URI

Crea un objeto Windows.Foundation.Uri para que el URI lo inicie. Este URI usa el nombre de esquema de HTTP.


// The URI to launch
var uriToLaunch = "https://www.bing.com";

// Create a Uri object from a URI string 
var uri = new Windows.Foundation.Uri(uriToLaunch);

Paso 2: Iniciar el URI

El sistema operativo proporciona varias opciones distintas para iniciar el controlador predeterminado de un URI. Estas opciones se explican en este gráfico y en las secciones que siguen.

Opción Método Descripción
Inicio predeterminado LaunchUriAsync(Uri) Inicia el URI especificado con el controlador predeterminado.
Iniciar con un diálogo de advertencia LaunchUriAsync(Uri, LauncherOptions) El sistema operativo mostrará un diálogo de advertencia antes de iniciar el URI especificado.
Iniciar con una reserva de aplicación recomendada LaunchUriAsync(Uri, LauncherOptions) Inicia el URI 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 LaunchUriAsync(Uri, LauncherOptions) (solo Windows) Inicia el URI 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.

 

Estos ejemplos usan el método Windows.System.Launcher.launchUriAsync para iniciar el URI. Este es un método sobrecargado.

Default launch

Llama al método Windows.System.Launcher.launchUriAsync(Uri) para iniciar el URI creado en el paso 1 usando la aplicación predeterminada del URI http.

// Launch the URI
Windows.System.Launcher.launchUriAsync(uri).then(   
   function (success) {
      if (success) {
        // URI launched
      } else {
        // URI launch failed
      }
   });

Launch with a warning dialog

Llama al método Windows.System.Launcher.launchUriAsync(Uri, LauncherOptions) para iniciar el URI creado en el paso 1 con una advertencia. Usa la propiedad treatAsUntrusted para indicar que el sistema muestre una advertencia.

Nota  

Llama a preventDefault en tu controlador de eventos, si la propiedad treatAsUntrusted está definida y estás usando un elemento a para iniciar el URI.

 

Un diálogo de advertencia superpuesto en un fondo atenuado de la aplicación. El diálogo pregunta al usuario si desea cambiar de aplicación y tiene los botones ‘Sí’ y ‘No’ en la zona inferior derecha. El botón ‘No’ está resaltado.

function linkClickHandler(eventInfo) {
    var link = eventInfo.target;
    if (eventInfo.srcElement && (
        (eventInfo.type === "click") ||
        (eventInfo.type === "keydown" && (
        eventInfo.keyCode === WinJS.Utilities.Key.enter ||
        eventInfo.keyCode === WinJS.Utilities.Key.space)))) {
        eventInfo.preventDefault();
        if (link.href.indexOf("ms-appx") > -1) {
            WinJS.Navigation.navigate(link.href);
        }
        else if (link.href.indexOf("http") > -1) {
            // Create a Uri object from a URI string 
            var uri = new Windows.Foundation.Uri(link.href);
            var options = new Windows.System.LauncherOptions();
            // Launch the URI with a warning prompt
            options.treatAsUntrusted = true;
            // Launch the URI
            Windows.System.Launcher.launchUriAsync(uri, options).then(
                function (success) {
                    if (success) {
                        // URI launched
                    } else {
                        // URI launch failed
                    }
                });
        }
    }
}

Launch with a recommended app fallback

En algunos casos, es posible que el usuario no tenga instalada una aplicación para administrar el URI 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.LaunchUriAsync(Uri, 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.

 

El diálogo Abrir con para un inicio del URI de contoso. Como contoso no tiene un controlador instalado en la máquina, el diálogo contiene una opción con el icono y el texto de la Tienda que apunta al usuario al controlador correcto en la Tienda. El diálogo también contiene un vínculo ‘Más opciones’.

// Set the recommended app.
var options = new Windows.System.LauncherOptions();
options.preferredApplicationPackageFamilyName = "Contoso.URIApp_8wknc82po1e";
options.preferredApplicationDisplayName = "Contoso URI App";

// Launch the URI and pass in the recommended app 
// in case the user has no apps installed to handle the URI
Windows.System.Launcher.launchUriAsync(uri, options).then(
   function (success) {
      if (success) {
        // Uri launched
      } else {
        // Uri launch failed
      }
   });

Inicio con una vista deseada permanente (solo Windows)

Las aplicaciones de origen que llaman a LaunchUriAsync pueden solicitar permanecer en pantalla después de iniciarse un URI. 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 URI. 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 del URI 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.

// Launch the URI with a desired remaining view
var options = new Windows.System.LauncherOptions();
options.desiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.useLess;

Windows.System.Launcher.launchUriAsync(uri, options).then(
   function (success) {
      if (success) {
        // URI launched
      } else {
        // URI 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 URI, tu aplicación debe ser la aplicación en primer plano, es decir, debe estar 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 URI directamente a la interfaz de usuario de la aplicación. El usuario siempre debe tener que realizar alguna acción para iniciar el URI. Si intentas iniciar un URI 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.

Debes especificar la funcionalidad privateNetworkClientServer para poder iniciar los URI de la intranet como, por ejemplo, un URI file:/// que apunte a una ubicación de red.

No puedes usar este método para iniciar un URI en la zona local. Por ejemplo, las aplicaciones no pueden usar el URI file:/// para acceder a archivos en el equipo local. Para acceder a estos archivos, debes usar Storage APIs. Si intentas iniciar un URI de intranet sin la funcionalidad adecuada o un URI de zona local, se producirá un error en el inicio y se invocará a la devolución de llamada de error.

Ejemplo completo

Consulta el ejemplo de inicio por asociación (Windows).

Temas relacionados

Tareas

Cómo administrar la activación de protocolos

Cómo iniciar la aplicación predeterminada de un archivo

Directrices

Directrices y lista de comprobación de tipos de archivo y URI

Referencia

Windows.System.Launcher.launchUriAsync