Come avviare l'app predefinita per un file (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 ]

Impara ad avviare l'app predefinita per un file. Molte app devono interagire con file che non sono in grado di gestire autonomamente. Ad esempio, le app di email ricevono una varietà di tipi di file e hanno bisogno di un modo per avviare questi file nei gestori predefiniti corrispondenti.

Questi passaggi illustrano come usare l'API Windows.System.Launcher per avviare il gestore predefinito per un file che l'app non è in grado di gestire da sola.

Istruzioni

Passaggio 1: Recuperare il file

Per prima cosa, recupera un oggetto Windows.Storage.StorageFile per il file.

Se il file è incluso nel pacchetto dell'app, puoi utilizzare la proprietà Package.installedLocation per ottenere un oggetto Windows.Storage.StorageFolder e il metodo Windows.Storage.StorageFolder.getFileAsync per ottenere l'oggetto StorageFile.

Se il file si trova in una cartella nota, puoi usare le proprietà della classe Windows.Storage.KnownFolders per ottenere l'oggetto StorageFolder e il metodo getFileAsync per ottenere l'oggetto StorageFile.

Passaggio 2: Avviare il file

Windows offre diverse opzioni che consentono di avviare il gestore predefinito di un file. Queste opzioni sono descritte nella tabella seguente e nelle sezioni successive di questo articolo.

Opzione Metodo Descrizione
Avvio predefinito LaunchFileAsync(IStorageFile) Avvia il file specificato con il gestore predefinito.
Avvio tramite Apri con LaunchFileAsync(IStorageFile, LauncherOptions) Avvia il file specificato consentendo all'utente di selezionare il gestore nella finestra di dialogo Apri con.
Avvio con un fallback di app consigliato LaunchFileAsync(IStorageFile, LauncherOptions) Avvia il file 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 LaunchFileAsync(IStorageFile, LauncherOptions) (solo Windows) Avvia il file 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.

 

Default launch

Chiama il metodo Windows.System.Launcher.launchFileAsync(IStorageFile) per avviare l'app predefinita. Questo esempio usa il metodo Windows.Storage.StorageFolder.getFileAsync per avviare un file immagine, test.png, incluso nel pacchetto dell'app.


// 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

Chiama il metodo Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) con LauncherOptions.displayApplicationPicker impostato su true per avviare l'app selezionata dall'utente nella finestra di dialogo Apri con.

Consigliamo di usare la finestra di dialogo Apri con per offrire all'utente la possibilità di selezionare un'app diversa da quella predefinita per un particolare file. Se l'app consente all'utente di avviare un file immagine, ad esempio, il gestore predefinito sarà molto probabilmente un'app visualizzatore. In alcuni casi, però, l'utente potrebbe voler modificare l'immagine anziché visualizzarla. In questi tipi di scenario, usa l'opzione Apri con insieme a un comando alternativo in AppBar o in un menu di scelta rapida per consentire all'utente di visualizzare la finestra di dialogo Apri con e selezionare un'app editor.

Finestra di dialogo Apri con per l'avvio di un file png. La finestra di dialogo contiene una casella di controllo che specifica se la scelta dell'utente deve essere usata per tutti i file png o solo per questo specifico file png. La finestra di dialogo contiene quattro opzioni dell'app per l'avvio del file e un link Altre opzioni.


// 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

In alcuni casi è possibile che nel computer dell'utente non sia installata un'app per gestire il file 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.launchFileAsync(IStorageFile, 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 file con estensione 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.


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

Avvio con una visualizzazione rimanente desiderata (solo Windows)

Le app di origine che chiamano LaunchFileAsync possono richiedere di rimanere sullo schermo dopo l'avvio di un file. Per impostazione predefinita Windows cerca di distribuire equamente tutto lo spazio disponibile tra l'app di origine e quella di destinazione che gestisce il file. 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 del file 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.

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

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'apertura di un file 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 file direttamente all'interfaccia utente della tua app. In genere, l'utente deve sempre eseguire un'azione per avviare l'apertura di un file. Se tenti di aprire un file mentre l'app non è in primo piano, l'operazione non riesce e viene richiamato il callback di errore.

Non è possibile aprire tipi di file contenenti codice o script e che vengono eseguiti automaticamente dal sistema operativo, ad esempio file con estensione exe, msi e js. Questa restrizione protegge gli utenti da file potenzialmente dannosi che potrebbero modificare il sistema operativo. Puoi usare questo metodo per avviare tipi di file che possono contenere script se vengono eseguiti da un'app che isola lo script, ad esempio i file con estensione docx. Le app come Microsoft Word impediscono agli script nei file docx di modificare il sistema operativo.

Se tenti di aprire un tipo di file soggetto a restrizioni, l'operazione non riesce e viene richiamato il callback di errore. Se l'app gestisce molti tipi di file diversi e prevedi che si verifichi questo errore, è consigliabile predisporre un'esperienza di fallback per l'utente. Puoi ad esempio offrire all'utente un'opzione per salvare il file sul desktop e quindi aprirlo da tale posizione.

Esempio completo

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

Argomenti correlati

Attività

Come gestire l'attivazione di file

Come avviare l'app predefinita per un URI

Linee guida

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

Riferimento

Windows.Storage.StorageFile

Windows.System.Launcher.launchFileAsync