So wird’s gemacht: Starten der Standard-App für eine Datei (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Hier erfahren Sie, wie Sie die Standard-App für eine Datei starten. Viele Apps müssen mit Dateien arbeiten, die sie nicht selbst behandeln können. E-Mail-Apps erhalten beispielsweise eine Vielzahl von Dateitypen und müssen über eine Möglichkeit verfügen, diese Dateien mit ihren Standardhandlern zu starten.

In den folgenden Schritten erfahren Sie, wie Sie den Standardhandler für eine Datei, die Ihre App nicht selbst behandeln kann, mithilfe der Windows.System.Launcher-API starten.

Anweisungen

Schritt 1: Abrufen der Datei

Rufen Sie zunächst ein Windows.Storage.StorageFile-Objekt für die Datei ab.

Wenn die Datei im Paket für die App enthalten ist, können Sie die Package.installedLocation-Eigenschaft verwenden, um ein Windows.Storage.StorageFolder-Objekt abzurufen, und die Windows.Storage.StorageFolder.getFileAsync-Methode, um das StorageFile-Objekt abzurufen.

Falls sich die Datei in einem bekannten Ordner befindet, können Sie die Eigenschaften der Windows.Storage.KnownFolders-Klasse verwenden, um ein StorageFolder-Objekt abzurufen, und die getFileAsync-Methode, um das StorageFile-Objekt abzurufen.

Schritt 2: Starten der Datei

Windows stellt mehrere verschiedene Optionen zum Starten des Standardhandlers für eine Datei bereit. Diese werden in dem folgenden Diagramm und in den folgenden Abschnitten beschrieben.

Option Methode Beschreibung
Standardstart LaunchFileAsync(IStorageFile) Starten Sie die angegebenen Datei mit dem Standardhandler.
Starten über "Öffnen mit" LaunchFileAsync(IStorageFile, LauncherOptions) Starten Sie die angegebene Datei und lassen Sie den Benutzer den Handler über das Dialogfeld "Öffnen mit" auswählen.
Start mit einem empfohlenen App-Fallback LaunchFileAsync(IStorageFile, LauncherOptions) Starten Sie die angegebenen Datei mit dem Standardhandler. Wenn kein Handler im System installiert ist, empfehlen Sie dem Benutzer eine App im Store.
Starten mit einer gewünschten verbleibenden Ansicht LaunchFileAsync(IStorageFile, LauncherOptions) (nur Windows) Starten Sie die angegebenen Datei mit dem Standardhandler. Geben Sie an, wie lange die App nach dem Start auf dem Bildschirm verbleiben soll. Fordern Sie zudem eine bestimmte Fenstergröße an.

Windows 8.1:  LauncherOptions.DesiredRemainingView wird erst ab Windows 8.1 und Windows Server 2012 R2 unterstützt.

Windows Phone:  LauncherOptions.DesiredRemainingView wird nicht für Windows Phone unterstützt.

 

Default launch

Rufen Sie die Windows.System.Launcher.launchFileAsync(IStorageFile)-Methode auf, um die Standard-App zu starten. In diesem Beispiel wird die Windows.Storage.StorageFolder.getFileAsync-Methode verwendet, um eine im App-Paket enthaltene Bilddatei test.png zu starten.


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

Rufen Sie die Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions)-Methode mit dem LauncherOptions.displayApplicationPicker-Wert true auf, um die App zu starten, die der Benutzer im Dialogfeld Öffnen mit auswählt.

Mit dem Dialogfeld Öffnen mit können Sie dem Benutzer das Auswählen einer anderen App als der Standard-App für einen bestimmten Dateityp ermöglichen. Angenommen, Ihre App ermöglicht dem Benutzer das Aufrufen einer Bilddatei. In diesem Fall ist der Standardhandler wahrscheinlich eine Anzeige-App. Nun kann es jedoch sein, dass der Benutzer die Datei nicht nur anzeigen, sondern auch bearbeiten möchte. Mit der Option Öffnen mit und einem alternativen Befehl in der AppBar oder in einem Kontextmenü können Sie dem Benutzer das Aufrufen des Dialogfelds Öffnen mit und das Auswählen einer entsprechenden Editor-App ermöglichen.

Das Dialogfeld "Öffnen mit" für den Start einer PNG-Datei. Das Dialogfeld enthält ein Kontrollkästchen, in dem angegeben wird, ob die Benutzerauswahl für alle PNG-Dateien oder nur für diese PNG-Datei verwendet werden soll. Das Dialogfeld enthält vier App-Optionen für den Start der Datei und einen Link "Weitere Optionen".


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

Es kann jedoch sein, dass der Benutzer nicht über die erforderliche App zum Bearbeiten des aufgerufenen Dateityps verfügt. In diesen Fällen bietet das Betriebssystem standardmäßig einen Link an, über den Benutzer im Store nach einer geeigneten App suchen können. Wenn Sie dem Benutzer eine bestimmte App für dieses spezifische Szenario empfehlen möchten, können Sie die Empfehlung zusammen mit der gestarteten Datei übergeben. Rufen Sie dazu die Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions)-Methode auf, wobei LauncherOptions.preferredApplicationPackageFamilyName auf den Paketfamiliennamen der empfohlenen App im Store festgelegt ist. Legen Sie anschließend LauncherOptions.preferredApplicationDisplayName auf den Namen dieser App fest. Diese Infos werden vom Betriebssystem verwendet, um die allgemeine Option zum Suchen einer App im Store durch die spezifische Option zum Verwenden der empfohlenen App im Store zu ersetzen.

Hinweis  Wenn Sie eine App empfehlen möchten, müssen Sie beide Optionen festlegen. Eine Festlegung der einen ohne die andere führt zu einem Fehler.

 

Das Dialogfeld "Öffnen mit" für den Start einer ".contoso"-Datei. Da auf dem Computer kein Handler für ".contoso" installiert ist, enthält das Dialogfeld eine Option mit dem Store-Symbol und Text, der den Benutzer auf den richtigen Handler im Store verweist. Das Dialogfeld enthält auch einen Link "Weitere Optionen".


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

Starten mit einer gewünschten verbleibenden Ansicht (nur Windows)

Quell-Apps, die LaunchFileAsync aufrufen, können anfordern, nach dem Start einer Datei auf dem Bildschirm zu verbleiben. Standardmäßig wird von Windows versucht, den gesamten verfügbaren Speicher gleichmäßig zwischen der Quell- und der Ziel-App, die die Datei verarbeitet, aufzuteilen. Quell-Apps können die DesiredRemainingView-Eigenschaft verwenden. Hiermit geben sie dem Betriebssystem an, mehr oder weniger des verfügbaren Speichers für ihr App-Fenster zu verwenden. DesiredRemainingView kann auch verwendet werden, um anzugeben, dass die Quell-App nach dem Start der Datei nicht auf dem Bildschirm verbleiben muss und vollständig durch die Ziel-App ersetzt werden kann. Mit dieser Eigenschaft wird nur die bevorzugte Fenstergröße der aufrufenden App angegeben. Es wird nicht das Verhalten anderer Apps angegeben, die ggf. zur gleichen Zeit auf dem Bildschirm angezeigt werden.

Hinweis  Von Windows werden mehrere unterschiedliche Faktoren in Betracht gezogen, wenn die endgültige Fenstergröße der Quell-App bestimmt wird. Dazu zählen beispielsweise die Einstellung der Quell-App, die Anzahl der Apps auf dem Bildschirm und die Bildschirmausrichtung. Das Festlegen von DesiredRemainingView garantiert kein bestimmtes Fensterverhalten für die Quell-App.

 

Windows 8.1: LauncherOptions.DesiredRemainingView wird erst ab Windows 8.1 und Windows Server 2012 R2 unterstützt.

Windows Phone: LauncherOptions.DesiredRemainingView wird nicht für Windows Phone unterstützt.

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

Anmerkungen

Die gestartete App kann nicht von Ihrer App ausgewählt werden. Der Benutzer entscheidet, welche App gestartet wird. Der Benutzer kann eine Windows Store-App oder eine Desktop-App auswählen.

Beim Starten einer Datei muss Ihre App im Vordergrund ausgeführt werden, d. h. sie muss für den Benutzer sichtbar sein. Durch diese Anforderung wird sichergestellt, dass der Benutzer zu jedem Zeitpunkt die Kontrolle behält. Verknüpfen Sie alle Dateistartvorgänge direkt mit der Benutzeroberfläche Ihrer App, um sicherzustellen, dass diese Anforderung erfüllt wird. Benutzer müssen wahrscheinlich immer eine Aktion ausführen, bevor eine Datei gestartet werden kann. Wenn Sie versuchen, eine Datei zu starten, während Ihre App nicht im Vordergrund angezeigt wird, schlägt der Start fehl, und Ihr Fehlerrückruf wird aufgerufen.

Dateitypen mit Code oder Skripts, die automatisch vom Betriebssystem ausgeführt werden (z. B. EXE-, MSI- oder JS-Dateien), können nicht gestartet werden. Diese Einschränkung schützt Benutzer vor der Ausführung von schädlichen Dateien, durch die das Betriebssystem verändert werden könnte. Mit dieser Methode können Sie Dateitypen mit Skripts starten, wenn das Skript dabei von der ausgeführten App isoliert wird, z. B. DOCX-Dateien. Apps wie Microsoft Word verhindern, dass das Betriebssystem durch DOCX-Dateien modifiziert wird.

Wenn Sie versuchen, einen eingeschränkten Dateityp zu starten, schlägt der Start fehl, und Ihr Fehlerrückruf wird aufgerufen. Wenn Ihrer App viele verschiedene Dateitypen behandelt und Sie erwarten, dass dieser Fehler auftritt, sollten Sie Benutzern eine Fallbackoption zur Verfügung stellen. Bieten Sie Benutzern z. B. die Möglichkeit, die Datei auf dem Desktop zu speichern und zu öffnen.

Vollständiges Beispiel

Siehe Beispiel für Assoziationsstart (Windows).

Verwandte Themen

Aufgaben

So wird's gemacht: Behandeln der Dateiaktivierung

So wird's gemacht: Starten der Standard-App für einen URI

Richtlinien

Richtlinien und Prüflisten für Dateitypen und URIs

Referenz

Windows.Storage.StorageFile

Windows.System.Launcher.launchFileAsync