android模拟器手机打开本地网页
本地电脑网页代码
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;@Overrideprotected 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"
完整示例:
<applicationandroid: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/
成功访问本地电脑服务了。