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

Xamarin Android中WebView无法加载HTTP URL问题求助

Xamarin Android WebView无法加载HTTP URL的解决方案

问题根源

你的项目targetSdkVersion为30(Android 11),而Android 9(API 28)及以上系统默认禁止明文HTTP流量。同时你的AndroidManifest.xml中明确设置了android:usesCleartextTraffic="false",这直接导致WebView无法加载HTTP协议的链接。

修复步骤

1. 启用明文流量支持

修改AndroidManifest.xml,将usesCleartextTraffic设置为true。推荐将该属性放在<application>标签内(官方标准配置方式):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.tele_medicine" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="30" />
    <application 
        android:allowBackup="true" 
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name" 
        android:roundIcon="@mipmap/ic_launcher_round" 
        android:supportsRtl="true" 
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>

2. 确保WebViewClient未拦截HTTP请求

检查你自定义的TeleWebViewClient实现,若重写了ShouldOverrideUrlLoading方法,需确保允许HTTP链接加载:

public class TeleWebViewClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request)
    {
        // 允许加载所有URL,包括HTTP
        view.LoadUrl(request.Url.ToString());
        return true;
    }

    // 可选:捕获加载错误,便于排查问题
    public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error)
    {
        base.OnReceivedError(view, request, error);
        // 可在此处添加错误日志或提示
    }
}

3. 验证WebView配置

你的MainActivity.cs中的WebView配置已经满足加载需求,无需额外修改,但可以添加错误监听辅助排查:

web_view.SetWebViewClient(new TeleWebViewClient());
// 添加WebChromeClient监听加载进度(可选)
web_view.SetWebChromeClient(new WebChromeClient());

额外说明

如果你的应用需要同时支持HTTPS和HTTP,上述配置即可解决问题。若仅在测试环境使用HTTP,正式环境建议切换为HTTPS以符合Android安全规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:31