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
相关产品推荐
相关产品推荐

