URI Launcher
Tip
This article covers Uno-specific information for the Windows.System
namespace. For a full description of the feature and instructions on using it, see Windows.System Namespace.
- The
Windows.System.Launcher
class provides functionality for launching URIs and apps.
LaunchUriAsync
This API is supported on iOS, Android, WASM, and macOS.
On iOS, Android, and macOS the ms-settings:
special URI is supported.
Platform-specifics
On iOS, launching the special URI opens the main page of system settings because deep-linking to specific settings is not available.
For WASM, launching the special URI will work properly only when opening the website on Windows. The method will return true
even if the user cancels the application launch, as there is currently no way to detect if the app was successfully launched. When using LaunchUriAsync
on WASM, note that there should be no await between user interaction (button click / command etc) and the Launcher invocation. Otherwise, the browser may ignore it due to security reasons.
In case of Android, we support the following nested URIs.
Settings URI | Android Mapping |
---|---|
ms-settings:sync |
Settings.ActionSyncSettings |
ms-settings:appsfeatures-app |
Settings.ActionApplicationDetailsSettings |
ms-settings:appsfeatures |
Settings.ActionApplicationSettings |
ms-settings:defaultapps |
Settings.ActionManageDefaultAppsSettings |
ms-settings:appsforwebsites |
Settings.ActionManageDefaultAppsSettings |
ms-settings:cortana |
Settings.ActionVoiceInputSettings |
ms-settings:bluetooth |
Settings.ActionBluetoothSettings |
ms-settings:printers |
Settings.ActionPrintSettings |
ms-settings:typing |
Settings.ActionHardKeyboardSettings |
ms-settings:easeofaccess |
Settings.ActionAccessibilitySettings |
ms-settings:network-airplanemode |
Settings.ActionAirplaneModeSettings |
ms-settings:network-celluar |
Settings.ActionNetworkOperatorSettings |
ms-settings:network-datausage |
Settings.ActionDataUsageSettings |
ms-settings:network-wifiSettings |
Settings.ActionWifiSettings |
ms-settings:nfctransactions |
Settings.ActionNfcSettings |
ms-settings:network-vpn |
Settings.ActionVpnSettings |
ms-settings:network-wifi |
Settings.ActionWifiSettings |
ms-settings:network |
Settings.ActionWirelessSettings |
ms-settings:personalization |
Settings.ActionDisplaySettings |
ms-settings:privacy |
Settings.ActionPrivacySettings |
ms-settings:about |
Settings.ActionDeviceInfoSettings |
ms-settings:apps-volume |
Settings.ActionSoundSettings |
ms-settings:batterysaver |
Settings.ActionBatterySaverSettings |
ms-settings:display |
Settings.ActionDisplaySettings |
ms-settings:screenrotation |
Settings.ActionDisplaySettings |
ms-settings:quiethours |
Settings.ActionZenModePrioritySettings |
ms-settings:quietmomentshome |
Settings.ActionZenModePrioritySettings |
ms-settings:nightlight |
Settings.ActionNightDisplaySettings |
ms-settings:taskbar |
Settings.ActionDisplaySettings |
ms-settings:notifications |
Settings.ActionAppNotificationSettings |
ms-settings:storage |
Settings.ActionInternalStorageSettings |
ms-settings:sound |
Settings.ActionSoundSettings |
ms-settings:dateandtime |
Settings.ActionDateSettings |
ms-settings:keyboard |
Settings.ActionInputMethodSettings |
ms-settings:regionlanguage |
Settings.ActionLocaleSettings |
ms-settings:developers |
Settings.ActionApplicationDevelopmentSettings |
In case of macOS, Uno supports the following nested URIs, mapped to Preference Panes (/System/Library/PreferencePanes)
Settings URI | macOS Mapping |
---|---|
ms-settings:signinoptions-launchfaceenrollment |
TouchID |
ms-settings:launchfingerprintenrollment |
TouchID |
ms-settings:signinoptions |
Accounts |
ms-settings:emailandaccounts |
InternetAccounts |
ms-settings:appsforwebsites |
Settings.ActionManageDefaultAppsSettings |
ms-settings:tabletmode |
Expose |
ms-settings:personalization-start |
Expose |
ms-settings:personalization-background |
DesktopScreenEffectsPref |
ms-settings:personalization |
Appearance |
ms-settings:bluetooth |
Bluetooth |
ms-settings:dateandtime |
DateAndTime |
ms-settings:region |
Localization |
ms-settings:typing |
Keyboard |
ms-settings:display |
Displays |
ms-settings:screenrotation |
Displays |
ms-settings:taskbar |
Dock |
ms-settings:batterysaver |
EnergySaver |
ms-settings:powersleep |
EnergySaver |
ms-settings:otherusers |
FamilySharingPrefPane |
ms-settings:mousetouchpad |
Mouse |
ms-settings:devices-touchpad |
Trackpad |
ms-settings:network |
Network |
ms-settings:privacy-notifications |
Notifications |
ms-settings:printers |
PrintAndFax |
ms-settings:privacy |
Security |
ms-settings:crossdevice |
SharingPref |
ms-settings:quiethours |
ScreenTime |
ms-settings:quietmomentshome |
ScreenTime |
ms-settings:sound |
Sound |
ms-settings:windowsupdate |
SoftwareUpdate |
ms-settings:cortana-windowssearch |
Spotlight |
ms-settings:cortana |
Speech |
ms-settings:storage |
StartupDisk |
ms-settings:backup |
TimeMachine |
ms-settings:easeofaccess |
UniversalAccessPref |
Exceptions
- When the
uri
argument isnull
,NullReferenceException
is thrown. Note this differs from UWP whereAccessViolationException
is thrown. - When the method is called from a non-UI thread,
InvalidOperationException
is thrown.
Exceptions are in line with UWP.
QueryUriSupportAsync
This API is supported on iOS, Android, and macOS, and the implementation does not respect the LaunchQuerySupportType
parameter yet. It also reports the aforementioned special ms-settings
URIs on Android and iOS as supported.
Platform-specific requirements
Android
When targeting Android 11 (API 30) or newer, you may notice the QueryUriSupportAsync
returning false. To avoid this, make sure to add any URL schemes passed to it as <queries>
entries in your AndroidManifest.xml
:
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="tel" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>
iOS
Add any URL schemes passed to QueryUriSupportAsync
as LSApplicationQueriesSchemes
entries in your Info.plist
file, otherwise, it will return false:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tel</string>
<string>https</string>
</array>
Exceptions
- When the
uri
argument isnull
,NullReferenceException
is thrown. Note this differs from UWP where a plainException
with HRESULT is thrown.
Exceptions are in line with UWP.