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