Android WebView加载本地静态资源、字体总结

Android WebView加载本地静态资源、字体总结

  1. 服务端下发H5常用的静态资源zip包,下载到本地后解压缩
  2. WebView加载包里的html文件,并重写WebViewClient中的
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)

方法,拦截请求,当拦截并匹配上url后返回WebResourceResponse,否则返回null

  1. H5需要加载本地的字体,可以使用file协议,比如
// H5端
@font-face {
		font-family: 'xxx';
		src: url('file:///android_asset/fonts/xxx.ttf');
}

Android端把字体文件放在assets/fonts文件夹下就行。
如果字体文件太大,也可以把字体文件放在sd目录中,或者服务端下发字体文件,然后前端把路径对应修改下即可,如
Android端把字体文件放在
storage/emulated/0/WebResource/fonts/xxx.ttf
前端对应修改即可

@font-face {
		font-family: 'xxx';
		src: url('file:///storage/emulated/0/WebResource/fonts/xxx.ttf');
}

Android端不需要做任何拦截或者其他处理,即可让WebView加载本地字体文件

遇到的问题

  1. 通过jsb传String遇到栈溢出错误,原因是Android端是用JsonObject转String,当数据太大时,JsonObject会抛出栈溢出错误。
    解决方法: jsb直接传递Object

  2. 前端没法调用接口
    解决方法:前端通过jsb的方法告诉客户端请求接口以及请求头,
    客户端调用接口并把数据返给前端

  3. iOS和Android没有统一的加载本地字体方法
    解决办法:前端出两个包

猜你喜欢

转载自blog.csdn.net/u011656025/article/details/112802591