【问题标题】:Xamarin Not allowed to load local resource fileXamarin 不允许加载本地资源文件
【发布时间】:2026-02-12 10:20:02
【问题描述】:

我在加载页面 File.html 时遇到问题。我想在 html 中加载我的地​​图,但模拟器没有显示。我得到了错误:

" [INFO:CONSOLE(0)] "不允许加载本地资源:file:///android_asset/HTMLPage1.html",来源:data:text/html,chromewebdata(0)"

" I/chromium(11080): [INFO:CONSOLE(0)] "不允许加载本地资源:file:///android_asset/webkit/android-weberror.png",来源:data:text/html ,chromewebdata (0) "

在模拟器页面上显示“网页不可用”

Xaml 文件:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:Mapaht"
         x:Class="Mapaht.Mapahet">


  <WebView
  x:Name="webviewjava"></WebView>
</ContentPage>

页面文件

public Mapahet()
    {
        InitializeComponent();


        webviewjava.Source = "file:///android_asset/HTMLPage1.html";
    }

【问题讨论】:

标签: javascript android html google-maps xamarin


【解决方案1】:

我在加载页面 File.html 时遇到问题。

执行以下步骤,对我来说效果很好:

XAML:

<WebView
    x:Name="webviewjava" 
    HorizontalOptions="FillAndExpand" 
    VerticalOptions="FillAndExpand"
    />

PCL 中的接口

public interface IBaseUrl
{
    string Get();
}

在Android中实现这个接口

[assembly: Dependency(typeof(BaseUrl_Android))]
namespace FormsWebview.Droid
{
    public class BaseUrl_Android : IBaseUrl
    {
        public string Get()
        {
            return "file:///android_asset/";
        }
    } 
}

Assets文件夹中加载本地资源文件

public MainPage()
{
    InitializeComponent();

    var baseUrl = DependencyService.Get<IBaseUrl>().Get();
    string Url = $"{baseUrl}local.html";
    webviewjava.Source = Url;
}

【讨论】:

    【解决方案2】:

    您在设置内容视图之前获取 WebView,因此 wv 可能为空。

     protected override void OnCreate (Bundle savedInstanceState)
            {
                base.OnCreate (savedInstanceState);
                    SetContentView (Resource.Layout.webview);
                     WebView wv;  
                    wv =  FindViewById<WebView>(Resource.Id.webviewjava);  
                    wv.LoadUrl("file:///android_asset/HTMLPage1.html");   
                }  
            }
    

    您需要在可以访问互联网的 AndroidMainfest.xml 文件中拥有权限:

     <uses-permission android:name="android.permission.INTERNET" />
    

    【讨论】: