Android应用WebView中本地图片无法显示的问题求助
Android WebView图片无法显示的解决方案
我来帮你搞定WebView里图片不显示的问题,结合你的现有配置一步步说清楚:
一、为啥原来的drawable路径没用?
Android的res/drawable资源在编译后会被系统处理并分配唯一的资源ID,根本没法通过file:///res/drawable/jobs.jpg这种文件路径直接访问,WebView找不到对应的资源,这就是最初图片不显示的核心原因。
二、移到assets文件夹的正确操作(解决你迁移后出错的问题)
把图片放到assets是正确的思路,但你大概率是路径写错或者WebView配置没到位,按下面的步骤来:
修正HTML里的图片路径
WebView访问assets目录下的资源,得用专属的协议路径:file:///android_asset/jobs.jpg。你的HTML代码要改成这样:<img src="file:///android_asset/jobs.jpg" style="margin-left:1em; height:300px; width:300px; border-radius:50%;">划重点:assets里的文件名区分大小写,一定要确保图片文件名是
jobs.jpg(和代码里完全一致),别出现大小写不匹配的情况。检查WebView的必要配置
加载HTML前,得给WebView开文件访问权限,不然它读不到assets里的资源。在代码里加上这些设置:WebSettings webSettings = webView.getSettings(); webSettings.setAllowFileAccess(true); // 必须开启,允许访问本地文件资源 // 如果你的HTML不需要JS可以保持关闭,需要的话就改成true webSettings.setJavaScriptEnabled(false); // 加载assets里的HTML文件也要用正确路径 webView.loadUrl("file:///android_asset/你的HTML文件名.html");排查迁移后的常见坑
- 确认图片确实放在
App/src/main/assets根目录下,要是不小心放到了assets的子文件夹(比如assets/images),路径就得改成file:///android_asset/images/jobs.jpg - 右键点击assets目录,选择「Synchronize 'assets'」同步一下,确保Android Studio把图片打包进了APK。
- 确认图片确实放在
三、不想移到assets?还有备选方案(保留在drawable)
如果你坚持把图片放在drawable里,可以把资源转成Base64嵌入HTML,不过这种方法更适合小图片,大图片会让HTML文件变大。举个例子:
- 把drawable里的
jobs.jpg转成Base64字符串(可以用在线工具或者Android代码生成) - 在HTML里直接引用:
<img src="data:image/jpeg;base64,你的Base64字符串内容" style="margin-left:1em; height:300px; width:300px; border-radius:50%;">
内容的提问来源于stack exchange,提问作者Chintan Mehta




