本地电脑网页代码
const express = require('express');
const path = require('path');
const app = express();
const port = 8080;
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
app.listen(port, '0.0.0.0', () => {
console.log(`Server running at http://localhost:${port}`);
});
\ok\public
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Local Web Server</title>
</head>
<body>
<h1>Welcome to My Local Server!</h1>
<p>This page is hosted locally using Node.js and Express.</p>
</body>
</html>
MainActivity.java代码
package com.example.openwifi;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = new WebView(this);
setContentView(webView);
webView.setWebViewClient(new WebViewClient()); // 内部加载网页
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 如需要JS
// 模拟器访问本机服务地址(10.0.2.2 是 host 机器)
webView.loadUrl("http://10.0.2.2:8080");
}
}

这个错误是因为从 Android 9.0(API 级别 28) 开始,默认不允许通过 HTTP 明文协议访问网络地址(只允许 HTTPS) ,所以你访问 http://10.0.2.2:8080/
会被系统拒绝,提示:
net::ERR_CLEARTEXT_NOT_PERMITTED
✅ 解决办法:允许明文 HTTP 请求
你需要修改 AndroidManifest.xml
和配置 network_security_config.xml
。
✅ 步骤一:创建网络安全配置文件
-
在
res/xml
目录下创建一个新文件:network_security_config.xml
(如果没有
xml
文件夹,可以手动创建)
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>
✅ 步骤二:修改 AndroidManifest.xml
在 <application>
标签中添加:
android:networkSecurityConfig="@xml/network_security_config"
完整示例:
<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:networkSecurityConfig="@xml/network_security_config">
...
</application>
✅ 补充说明
-
10.0.2.2
是 Android 模拟器访问主机(你电脑)的特殊 IP。 -
如果你使用的是 HTTPS,不会出现此问题。
-
如果你访问的是其他 IP 或域名,请将
<domain>
改成相应地址。
配置完成后重新运行你的 Android App,就可以通过 http://10.0.2.2:8080/
成功访问本地电脑服务了。