首页 > 解决方案 > 是否可以使用 Xamarin.Essetianls.Browser 打开嵌入的 HTML 文件

问题描述

需要在 Xamarin Native(不是 Xamarin.Forms)中呈现相当大的 T&C 嵌入文档。Xamarin.Essetianls.Broswser.OpenAsync("url") 非常适合网站页面,但出现错误:

The specified URL has an unsupported scheme. Only HTTP and HTTPS URLs are supported.

如果尝试

await Browser.OpenAsync("file://Data/TsAndCs.html")

标签: xamarinxamarin.androidxamarin.ios

解决方案


在android中,你可以把你本地的html页面放到Assets文件夹,请注意Build Action到AndroidAsset.

在此处输入图像描述

然后你可以创建一个接口来获取html文件路径。

public interface IBaseUrl
{
     string Get();
}

在Android文件夹中实现它。

    [assembly: Dependency(typeof(BaseUrl_Android))]
namespace MyWebView.Droid
{
    public class BaseUrl_Android : IBaseUrl
    {
        public BaseUrl_Android()
        {
        }

        public string Get()
        {
            return "file:///android_asset/";
        }
    }
}

IOS成就可以参考这个帖子:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows#local-html-content

注意:如果您想在html页面显示之前进行JS代码和xamarin表单控件的交互,请将此部分代码放到Navigated="MywebView_Navigated"

这是我的本地html。

<!DOCTYPE html>
<html>
<body>
 <span id="myfont">This is Local Html</span>

<script type="text/javascript">
function factorial(num) {
        if (num === 0 || num === 1)
            return 1;
        for (var i = num - 1; i >= 1; i--) {
            num *= i;
        }
        return num;
}
</script>
</body>
</html>

这是运行截图。

在此处输入图像描述


推荐阅读