安卓手机直接打开本地html失败主因是浏览器无本地存储权限,chrome等默认屏蔽file://协议;可靠方案是用termux+http-server启本地http服务,或用kiwi browser启用file://支持。

安卓手机直接打开本地 HTML 文件失败?先看浏览器权限
绝大多数失败不是因为文件不对,而是浏览器没被允许读取本地存储。Chrome、Edge、Firefox 在 Android 上默认禁止直接加载 file:// 协议下的 HTML(尤其从文件管理器点开时),会显示空白页或“无法访问此页面”。
- Chrome 最新版已彻底屏蔽
file://页面的 JS 执行和跨文件引用(比如<script src="lib.js"></script>会 404) - 系统自带浏览器(如三星 Internet)有时能打开,但不支持现代 API(
fetch、localStorage可能受限) - 真正可靠的方式是用支持本地服务的 App,而不是“双击打开”
用 http-server 快速起一个本地 HTTP 服务(推荐)
把手机当服务器用,绕过所有 file:// 限制,HTML、CSS、JS、图片全都能正常加载,开发调试几乎无差别。
- 前提:手机需安装 Termux(F-Droid 或 GitHub 下载,非 Play Store 版本更稳定)
- 执行:
pkg install nodejs-lts→npm install -g http-server - 进到 HTML 所在目录,运行:
http-server -p 8080 - 在手机浏览器打开
http://localhost:8080,或同一局域网内其他设备访问http://[手机IP]:8080
注意:http-server 默认不支持热更新,改完 HTML 要手动刷新;如果页面用到 fetch('./data.json'),确保 data.json 和 HTML 在同一目录下。
不用终端?试试 Kiwi Browser 或 Firefox Nightly
Kiwi 是基于 Chromium 的 Android 浏览器,唯一公开支持启用 file:// JS 执行的主流浏览器。Firefox Nightly 也保留了该开关,但稳定版已移除。
立即学习“前端免费学习笔记(深入)”;
- Kiwi 中打开
chrome://flags→ 搜索file→ 启用Enable file schemes→ 重启 - 之后用 Kiwi 的地址栏输入完整路径,例如:
file:///sdcard/test/index.html - 路径必须以三个斜杠开头(
file:///),且不能有中文或空格——否则直接打不开 - 仍不支持
import语法(ESM)、Service Worker、WebAssembly加载
微信/QQ 内置浏览器打不开 HTML?别试了
微信、QQ、钉钉等 App 的 WebView 是阉割版,禁用全部 file:// 访问,且不响应本地 HTTP 服务(除非你用 ngrok 做公网代理,但太重)。它们只认 https:// 链接。
- 临时方案:把 HTML 压缩成单文件(内联 CSS/JS),上传到
gist.github.com或jsfiddle.net,生成 HTTPS 链接再发微信 - 长期建议:别依赖社交 App 查看本地 HTML,它们不是浏览器,只是内容容器
- 特别提醒:
weixin://或qq://这类自定义协议,对 HTML 文件完全无效
最常被忽略的一点:Android 11+ 对 /sdcard/ 的访问做了沙盒强化,很多文件管理器“显示路径”是假的——看着是 /sdcard/test/,实际是 /storage/emulated/0/Android/data/[app]/files/。用 Termux 时务必先 ls 确认真实路径。










