当前位置: 首页 > 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.lryc.cn/news/595908.html

相关文章:

  • Tailwind CSS快速上手 Tailwind CSS的安装、配置、使用
  • J2EE模式---拦截过滤器模式
  • Vite:下一代前端构建工具的革命
  • C语言---VSCODE的C语言环境搭建
  • RISC-V基金会Datacenter SIG月会圆满举办,探讨RAS、PMU性能分析实践和经验
  • vs2017 c++ 使用sqlite3数据库
  • 末日期权的双买和单买策略区别是什么?
  • 双向链表详解及实现
  • C++_Hello算法_队列
  • 基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
  • 188粉福
  • Spring快速整合Mybatis
  • 技术与情感交织的一生 (十)
  • nodejs:告别全局安装,npx 命令详解及其与 npm 的区别
  • 从零开始学CTF(第二十五期)
  • Gitlab-CI实现组件自动推送
  • n8n - 为技术团队提供安全的自动化工作流
  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 知识库搭建之Meilisearch‘s 搜索引擎 测评-东方仙盟测评师
  • STL学习(一、string容器)
  • 暑假算法训练.6
  • 深入浅出Python函数:参数传递、作用域与案例详解
  • 根据数据,判断神经网络所需的最小参数量
  • 设计模式七:抽象工厂模式(Abstract Factory Pattern)
  • 【Linux内核模块】模块声明与描述
  • 【RK3576】【Android14】MIC开发调试
  • 杭州网站建设选哪家?派迪科技项目实力展示
  • Python 正则表达式在数据分析中的应用:实战指南
  • OpenCV基本的图像处理
  • AI助力临床医学科研创新与效率双提升丨临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模等