You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebView无法渲染网页,ShouldOverrideUrlLoading配置无效求助

问题分析与修复

你的代码存在关键逻辑错误:在else分支中手动调用view.LoadUrl(url)后返回true,这会拦截WebView的默认URL加载流程,同时手动触发的加载会和WebView内部渲染逻辑冲突,导致网页无法正常渲染。

修复后的代码

public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request)
{
    var url = request.Url.ToString();

    if (url.StartsWith("mailto:"))
    {
        Intent intent = new Intent(Intent.ActionSendto, Android.Net.Uri.Parse(url));
        _context.StartActivity(intent);
        return true;
    }
    // 非mailto链接,返回false让WebView使用默认逻辑加载
    return false;
}

关键说明

  • 返回true代表你已自行处理该URL,WebView不会执行默认加载;返回false则让WebView按自身流程加载页面,这是普通网页渲染的正确做法。
  • 原代码里LoadUrl+返回true的组合,会打断WebView的加载流程,使其无法正常初始化渲染环境。

额外排查点

如果修复后仍无法渲染,检查以下配置:

  • 确认WebView已启用JavaScript:view.Settings.JavaScriptEnabled = true;
  • 若网页包含HTTP+HTTPS混合资源,需设置:view.Settings.MixedContentMode = Android.Webkit.MixedContentHandling.AlwaysAllow;
  • 确保应用已申请网络权限:在AndroidManifest.xml中添加<uses-permission android:name="android.permission.INTERNET" />
  • 检查是否正确设置WebViewClient:view.SetWebViewClient(this);(当前类需继承WebViewClient)

内容的提问来源于stack exchange,提问作者GitGood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:36:00