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
My Local Web Server Welcome to My Local Server!
This page is hosted locally using Node.js and Express.
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
文件夹,可以手动创建)
内容如下:
10.0.2.2
✅ 步骤二:修改 AndroidManifest.xml
在 标签中添加:
android:networkSecurityConfig=\"@xml/network_security_config\"
完整示例:
...
✅ 补充说明
配置完成后重新运行你的 Android App,就可以通过 http://10.0.2.2:8080/
成功访问本地电脑服务了。