Freigeben über


So wird’s gemacht: Starten der Standard-App für einen URI (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 einen Uniform Resource Identifier (URI) starten. URIs ermöglichen den Start einer anderen App des Betriebssystems, um eine bestimmte Aufgabe auszuführen. Wenn Sie z. B. dem Benutzer die Möglichkeit geben möchten, in Ihrer App eine E-Mail an einen Kontakt zu schreiben, können Sie die Standard-E-Mail-App des Benutzers über den URI "mailto:" starten.

In den folgenden Schritten erfahren Sie, wie Sie den Standardhandler für einen URI mithilfe der Windows.System.Launcher-API starten.

Anweisungen

Schritt 1: Erstellen des URI

Erstellen Sie ein Windows.Foundation.Uri-Objekt für den zu startenden URI. Dieser URI verwendet den Schemanamen "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);

Schritt 2: Starten des URI

Das Betriebssystem stellt mehrere verschiedene Optionen zum Starten des Standardhandlers für einen URI bereit. Diese Optionen werden in diesem Diagramm und den anschließenden Abschnitten ausführlich beschrieben.

Option Methode Beschreibung
Standardstart LaunchUriAsync(Uri) Starten Sie den angegebenen URI mit dem Standardhandler.
Start mit Warndialogfeld LaunchUriAsync(Uri, LauncherOptions) Das Betriebssystem zeigt vor dem Start des angegebenen URIs ein Warndialogfeld an.
Start mit einem empfohlenen App-Fallback LaunchUriAsync(Uri, LauncherOptions) Starten Sie den angegebenen URI mit dem Standardhandler. Wenn kein Handler im System installiert ist, empfehlen Sie dem Benutzer eine App im Windows Store.
Starten mit einer gewünschten verbleibenden Ansicht LaunchUriAsync(Uri, LauncherOptions) (nur Windows) Starten Sie den angegebenen URI 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.

 

In diesen Beispielen wird die Windows.System.Launcher.launchUriAsync-Methode zum Starten des URI verwendet. Dies ist eine überladene Methode.

Default launch

Rufen Sie die Windows.System.Launcher.launchUriAsync(Uri)-Methode auf, um den in Schritt 1 erstellten URI mit der Standard-App für den HTTP-URI zu starten.

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

Launch with a warning dialog

Rufen Sie die Windows.System.Launcher.launchUriAsync(Uri, LauncherOptions)-Methode auf, um den in Schritt 1 erstellten URI mit einer Warnung zu starten. Verwenden Sie die treatAsUntrusted-Eigenschaft, um anzugeben, dass das Betriebssystem eine Warnung anzeigen soll.

Hinweis  

Rufen Sie preventDefault in Ihrem Ereignishandler auf, wenn die treatAsUntrusted-Eigenschaft festgelegt ist und Sie ein a-Element zum Starten des URIs verwenden.

 

Ein überlagernder Warndialog in der App auf grauem Hintergrund. Im Dialogfeld wird der Benutzer gefragt, ob die App gewechselt werden soll. Es sind die Schaltflächen "Ja" und "Nein" vorhanden. Die Schaltfläche "Nein" ist hervorgehoben.

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

Es kann jedoch sein, dass der Benutzer nicht über die erforderliche App zum Bearbeiten des aufgerufenen URI 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.LaunchUriAsync(Uri, 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 eines "contoso"-URI. 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".

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

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

Quell-Apps, die LaunchUriAsync aufrufen, können anfordern, nach dem Start eines URIs 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 den URI verarbeitet, aufzuteilen. Quell-Apps können die DesiredRemainingView-Eigenschaft verwenden. Damit teilen sie dem Betriebssystem mit, 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 des URIs 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.

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

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 eines URIs durch Ihre App muss diese im Vordergrund ausgeführt werden, d. h., die App muss für den Benutzer sichtbar sein. Mithilfe dieser Anforderung wird sichergestellt, dass der Benutzer zu jedem Zeitpunkt die Kontrolle behält. Verknüpfen Sie alle URI-Startvorgänge direkt mit der Benutzeroberfläche Ihrer App, um sicherzustellen, dass diese Anforderung erfüllt wird. Der Benutzer muss immer eine Aktion ausführen, um einen URI zu starten. Wenn Sie versuchen, einen URI zu starten, und Ihre App befindet sich nicht im Vordergrund, schlägt der Start fehl und Ihr Fehlerrückruf wird aufgerufen.

Sie müssen die privateNetworkClientServer-Funktion angeben, um Intranet-URIs aufrufen zu können, z. B. einen file:///-URI, der auf eine Netzwerkadresse verweist.

Diese Methode kann nicht zum Ausführen eines URIs in der lokalen Zone verwendet werden. Beispielsweise können Apps nicht mithilfe des URIs file:/// auf Dateien auf dem lokalen Gerät zugreifen. Stattdessen müssen Sie mit Storage APIs auf die Dateien zugreifen. Wenn Sie versuchen, einen Intranet-URI ohne die richtige Funktion oder einen URI für die lokale Zone zu starten, schlägt der Start fehl und Ihr Fehlerrückruf wird aufgerufen.

Vollständiges Beispiel

Siehe Beispiel für Assoziationsstart (Windows).

Verwandte Themen

Aufgaben

So wird's gemacht: Behandeln der Protokollaktivierung

So wird's gemacht: Starten der Standard-App für eine Datei

Richtlinien

Richtlinien und Prüflisten für Dateitypen und URIs

Referenz

Windows.System.Launcher.launchUriAsync