Xamarin.Forms在WebView中运行本地html文件

时间:2018-10-28 13:52:07

标签: c# html xamarin webview xamarin.forms

我想加载Xamarin.Forms项目中的本地HTML文件。文件名是index.html。我搜寻了一下,发现很多人都在谈论这个,但是没有一个答案对我有用。这就是我现在的位置。您可以在侧面看到HTML文件。

Visual Studio Image #3

这是我现在的代码

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        initBrowser();
    }

    public void initBrowser()
    {

        var source = new HtmlWebViewSource();
        string url = DependencyService.Get<IBaseUrl>().Get();
        string TempUrl = Path.Combine(url, "index.html");
        source.BaseUrl = url;
        string html;
        try
        {
            using (var sr = new StreamReader(TempUrl))
            {
                html = sr.ReadToEnd();
                source.Html = html;
            }

            browser.Source = source.Html;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
  }
}

编辑:我的问题是我无法访问android资产文件夹中的index.html

  

10-28 15:13:23.111 I / mono-stdout(13979):无法找到   路径“ /file:/android_asset/AboutAssets.txt”。找不到一部分   路径“ /file:/android_asset/index.html”。

编辑2:我发现了一种不尝试使用HtmlWebViewSource来解决我的问题的方法。我只是直接在浏览器中使用URI。来源

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace PreuveXamarin
{
    public interface IBaseUrl { string Get(); }
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            initBrowser();
        }

        public void initBrowser()
        {

            string path = DependencyService.Get<IBaseUrl>().Get();
            string url = Path.Combine(path, "index.html");

            browser.Source = url;


        }
    }
}

0 个答案:

没有答案