浏览器

Browse sample. 浏览示例

本文介绍如何使用 .NET Multi-platform App UI (.NET MAUI) IBrowser 接口。 该界面允许应用在系统首选浏览器或外部浏览器中打开 web 链接。

IBrowser 接口的默认实现通过 Browser.Default 属性提供。 IBrowser 接口和 Browser 类都包含在 Microsoft.Maui.ApplicationModel 命名空间中。

开始使用

要访问浏览器功能,需要下列特定平台的设置。

如果项目的目标 Android 版本设置为 Android 11 (R API 30) 或更高版本,则必须通过使用 Android 包装可见性要求的查询更新 Android 清单

Platforms/Android/AndroidManifest.xml 文件中,在 manifest 节点中添加以下 queries/intent 节点:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="http"/>
  </intent>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="https"/>
  </intent>
</queries>

打开浏览器

浏览器通过调用 IBrowser.OpenAsync 方法打开,调用类型为 UriBrowserLaunchMode 。 下列代码示例演示如何打开浏览器:

private async void BrowserOpen_Clicked(object sender, EventArgs e)
{
    try
    {
        Uri uri = new Uri("https://www.microsoft.com");
        await Browser.Default.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
    }
    catch (Exception ex)
    {
        // An unexpected error occurred. No browser may be installed on the device.
    }
}

此方法在浏览器启动后返回,而不是在用户关闭浏览器后返回。 Browser.OpenAsync 返回一个 bool 值,指示浏览器是否成功启动。

自定义

使用系统首选浏览器时,那么 iOS 和 Android 有多种自定义选项。 这些选项包括 TitleMode(仅限 Android)和出现的 Toolbar (iOS 和 Android)和 Controls (仅限 iOS)的首选颜色。

调用 OpenAsync 时,使用 BrowserLaunchOptions 指定这些选项。

private async void BrowserCustomOpen_Clicked(object sender, EventArgs e)
{
    try
    {
        Uri uri = new Uri("https://www.microsoft.com");
        BrowserLaunchOptions options = new BrowserLaunchOptions()
        {
            LaunchMode = BrowserLaunchMode.SystemPreferred,
            TitleMode = BrowserTitleMode.Show,
            PreferredToolbarColor = Colors.Violet,
            PreferredControlColor = Colors.SandyBrown
        };

        await Browser.Default.OpenAsync(uri, options);
    }
    catch (Exception ex)
    {
        // An unexpected error occurred. No browser may be installed on the device.
    }
}

平台差异

本部分介绍特定平台与浏览器 API 的差异。

BrowserLaunchOptions.LaunchMode 确定浏览器的启动方式: