当前位置: 首页 > news >正文

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


✅ 步骤一:创建网络安全配置文件

  1. 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/ 成功访问本地电脑服务了。

http://www.dtcms.com/a/292428.html

相关文章:

  • 科技向善,银发向暖:智慧养老与经济共筑适老未来
  • 如何给手机充电才不伤电池?
  • 未来趋势:LeafletJS 与 Web3/AI 的融合
  • ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用
  • STM32项目分享:智能洗碗机
  • Java并发编程:JUC核心组件全解析
  • 牛客NC16625 [NOIP2009]分数线划定(排序)
  • 矿用支架电液控配件3针3孔钢丝编织橡胶护套连接器
  • 基于深度学习的语音情感识别系统的设计与实现【BiLSTM、多层感知神经网络、Emotion2Vec、与CustomFeature】
  • 对随机生成的html文件做标签简析
  • RPA软件机器人如何提高工作效率?
  • python 中什么是作用域(Scope)?为什么函数内部的变量在外部无法访问?
  • 【华为机试】547. 省份数量
  • How script location, CWD, and relative imports interact
  • TIM定时中断
  • 操作系统:系统调用(System Calls)
  • 风险识别清单:构建动态化的风险管理体系
  • 从 0 到 1 搞定 Intel 核显推流:硬件视频编码环境安装完整学习笔记
  • UE5 UI 水平框
  • GoLand 部署第一个项目
  • 智慧制造合同解决方案
  • 外网访问内部私有局域网方案,解决运营商只分配内网IP不给公网IP问题
  • 【Docker】Docker的初步认识以及Ubuntu下的Docker环境安装、配置
  • iOS加固工具有哪些?从零源码到深度混淆的全景解读
  • 【Spring Boot】Spring Boot循环依赖破解:@Lazy与Setter注入的取舍指南(流程图修复版)
  • p5.js 圆弧的用法
  • 一键生成流程图,省时省力!
  • 网络安全基础作业三
  • ubuntu24.04安装CUDA、VLLM、Pytorch等并部署Qwen3-8B-AWQ【50系显卡通用】
  • pytorch 演示 “变分状态空间模型(Variational State-Space Model, VSSM)“ 基于 MINIST数据集