Android WebView加载本地HTML文件提示ERR_FILE_NOT_FOUND问题排查
问题分析与解决
你的操作存在两个核心错误:
1. 资源目录结构不符合Android规范
Android的res/raw目录不支持创建子文件夹,你将HTML文件放在res/raw/content下的结构无法被系统识别为有效资源路径。
2. 加载路径拼接错误
file:///android_res/raw/的访问路径仅指向res/raw根目录,无法识别其下的子目录,所以即使强行创建content子文件夹,系统也找不到对应文件。
修复方案
方案一:使用res/raw目录(无嵌套文件夹)
- 将
1-introduction.html直接移动到res/raw根目录,同时修改文件名符合资源命名规则:把横杠改为下划线,即1_introduction.html - 调整加载代码:
// 先把从Intent获取的file中的横杠替换为下划线,再拼接路径 webView.loadUrl("file:///android_res/raw/" + file.replace("-", "_") + ".html");
或者通过资源ID加载(更稳定):
// 将文件名转换为对应的资源ID int resId = getResources().getIdentifier(file.replace("-", "_"), "raw", getPackageName()); webView.loadUrl("android.resource://" + getPackageName() + "/" + resId);
方案二:使用assets目录(支持子文件夹)
如果需要按文件夹分类管理文件,推荐使用assets目录:
- 在
main目录下创建assets/content文件夹,将1-introduction.html放入其中 - 修改加载代码:
webView.loadUrl("file:///android_asset/content/" + file + ".html");
报错
net:ERR_FILE_NOT_FOUND的本质就是系统无法定位你指定的文件路径,核心问题是目录结构或路径写法不符合Android资源访问规则。
内容的提问来源于stack exchange,提问作者tolga
相关产品推荐
相关产品推荐

