Come avviare l'app predefinita per un URI (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Scopri come avviare l'app predefinita per un URI (Uniform Resource Identifier). Gli URI consentono di avviare un'altra app nel sistema operativo per eseguire un'attività specifica. Ad esempio, per consentire all'utente di inviare un'email a un contatto nella tua app, puoi usare l'URI mailto: per avviare l'app di email predefinita dell'utente.

Questi passaggi illustrano come usare l'API Windows.System.Launcher per avviare il gestore predefinito per un URI.

Istruzioni

Passaggio 1: Creare l'URI

Crea un oggetto Windows.Foundation.Uri per l'URI da avviare. Questo URI usa il nome di schema 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);

Passaggio 2: Avviare l'URI

Il sistema operativo offre diverse opzioni che consentono di avviare il gestore predefinito per un URI. Queste opzioni sono descritte nel grafico e nelle sezioni seguenti.

Opzione Metodo Descrizione
Avvio predefinito LaunchUriAsync(Uri) Avvia l'URI specificato con il gestore predefinito.
Avvio con una finestra di avviso LaunchUriAsync(Uri, LauncherOptions) Il sistema operativo visualizza una finestra di avviso prima di avviare l'URI specificato.
Avvio con un fallback di app consigliato LaunchUriAsync(Uri, LauncherOptions) Avvia l'URI specificato con il gestore predefinito. Se non è installato alcun gestore nel sistema, consiglia all'utente un'app in Windows Store.
Avvio con una visualizzazione rimanente desiderata LaunchUriAsync(Uri, LauncherOptions) (solo Windows) Avvia l'URI specificato con il gestore predefinito. Specifica una preferenza per la permanenza sullo schermo dopo l'avvio e richiedi specifiche dimensioni per la finestra.

Windows 8.1:  L'attributo LauncherOptions.DesiredRemainingView è supportato a partire da Windows 8.1 e Windows Server 2012 R2.

Windows Phone:  La proprietà LauncherOptions.DesiredRemainingView non è supportata per Windows Phone.

 

Per avviare l'URI, questi esempi usano il metodo Windows.System.Launcher.launchUriAsync, che è un metodo di overload

Default launch

Chiama il metodo Windows.System.Launcher.launchUriAsync(Uri) per avviare l'URI creato nel passaggio 1 usando l'app predefinita per l'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

Chiama il metodo Windows.System.Launcher.launchUriAsync(Uri, LauncherOptions) per avviare l'URI creato nel passaggio 1 con un avviso. Usa la proprietà treatAsUntrusted per indicare che il sistema operativo deve visualizzare un avviso.

Nota  

Chiama preventDefault nel gestore eventi se la proprietà treatAsUntrusted è impostata e usi un elemento a per avviare l'URI.

 

Una finestra di avviso sovrapposta a uno sfondo in grigio dell'app chiede all'utente se desidera passare a un'altra app e contiene i pulsanti Sì e No in basso a destra. Il pulsante No è evidenziato.

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

In alcuni casi è possibile che nel computer dell'utente non sia installata un'app per gestire l'URI da avviare. Per impostazione predefinita, il sistema operativo gestisce questi casi fornendo all'utente un link per cercare un'app appropriata in Windows Store. Se vuoi offrire all'utente un consiglio specifico sull'app da acquisire in questo scenario, puoi passare questo consiglio insieme al file da avviare. A questo scopo, chiama il metodo Windows.System.Launcher.LaunchUriAsync(Uri, LauncherOptions) con la proprietà LauncherOptions.preferredApplicationPackageFamilyName impostata sul nome della famiglia di pacchetti dell'app da consigliare disponibile in Windows Store. Imposta quindi LauncherOptions.preferredApplicationDisplayName sul nome dell'app. Il sistema operativo usa queste info per sostituire l'opzione generale di ricerca di un'app in Windows Store con un'opzione specifica per acquisire l'app consigliata da Windows Store.

Nota  Devi impostare entrambe le opzioni per consigliare un'app. Se ne imposti una senza impostare l'altra, si verificherà un errore.

 

Finestra di dialogo Apri con per l'avvio di un URI contoso. Poiché per contoso non è installato un gestore nel computer, la finestra di dialogo contiene un'opzione con l'icona di Windows Store e un testo che conduce l'utente al gestore corretto nello Store. La finestra di dialogo contiene anche un link Altre opzioni.

// 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
      }
   });

Avvio con una visualizzazione rimanente desiderata (solo Windows)

Le app di origine che chiamano LaunchUriAsync possono richiedere di rimanere sullo schermo dopo l'avvio di un URI. Per impostazione predefinita Windows cerca di distribuire equamente tutto lo spazio disponibile tra l'app di origine e quella di destinazione che gestisce l'URI. Le app di origine possono usare la proprietà DesiredRemainingView per segnalare al sistema operativo che preferiscono che la propria finestra occupi una quota maggiore o minore dello spazio disponibile. La proprietà DesiredRemainingView può essere anche utilizzata per indicare che l'app di origine non deve necessariamente rimanere sullo schermo dopo l'avvio dell'URI e può essere interamente sostituita dall'app di destinazione. Questa proprietà specifica solamente le dimensioni preferite della finestra dell'app chiamante. Non specifica il comportamento di altre app che potrebbero essere presenti sullo schermo nello stesso momento.

Nota  Windows tiene conto di tanti fattori diversi nel determinare le dimensioni finali della finestra dell'app di origine, ad esempio la preferenza dell'app stessa, il numero di app presenti sullo schermo, l'orientamento dello schermo, ecc.. L'impostazione di DesiredRemainingView non garantisce uno specifico comportamento di gestione delle finestre per l'app di origine.

 

Windows 8.1: La proprietà LauncherOptions.DesiredRemainingView è supportata a partire da Windows 8.1 e Windows Server 2012 R2.

Windows Phone: La proprietà LauncherOptions.DesiredRemainingView non è supportata per 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
      }
   });

Osservazioni

L'app non è in grado di selezionare l'app avviata. È l'utente a stabilire quale app viene avviata. L'utente può selezionare sia un'app di Windows Store sia un'app desktop.

All'avvio di un URI, l'app deve trovarsi in primo piano, ossia deve essere visibile all'utente. Questo requisito assicura che l'utente mantenga il controllo. Per soddisfare questo requisito, assicurati di collegare tutti gli avvii di URI direttamente all'interfaccia utente della tua app. L'utente dovrà sempre eseguire un'azione per iniziare l'avvio di un URI. Se tenti di avviare un URI mentre l'app non è in primo piano, l'avvio non riesce e viene richiamato il callback di errore.

Per avviare URI Intranet devi specificare la funzionalità privateNetworkClientServer, ad esempio un URI file:/// che punta a un percorso di rete.

Non puoi usare questo metodo per avviare un URI nell'area locale. Ad esempio, le app non possono usare l'URI file:/// per accedere ai file nel dispositivo locale. Per accedere ai file, devi usare le Storage APIs. Se tenti di avviare un URI Intranet senza la funzionalità corretta o un URI di area locale, l'avvio non riesce e viene richiamato il callback di errore.

Esempio completo

Vedi l'esempio di avvio di associazione (Windows).

Argomenti correlati

Attività

Come gestire l'attivazione di protocolli

Come avviare l'app predefinita per un file

Linee guida

Linee guida ed elenco di controllo per tipi di file e URI

Riferimento

Windows.System.Launcher.launchUriAsync