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没有统一的加载本地字体方法
    解决办法:前端出两个包

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值