首页 > Web开发 > 详细

webview资源本地化的一种实现方式

时间:2017-08-16 23:55:02      阅读:747      评论:0      收藏:0      [点我收藏+]

  最近接手了一个crosswalk的任务,需要将Xwalkview的视频资源放到sd卡里面,以后每次遇到相同的视频就直接读取sd卡里面的内容。

  刚开始想的使用crosswalk的webResourceClient,利用其中提供的‘shouldInterceptLoadRequest’方法进行url的拦截和资源重新返回。起初使用这个替换图片,html页面都是可以的,但是替换视频的时候就出现了问题,发现拦截成功,但是返回资源的时候就失败了,仍然是从html中video的src中读取的。之后查找了相关的内容,发现webview,包括xwalkview都是加载html中的video标签时,使用的都是mediaplayer,但是mediaplayer不支持重定向,因此使用这个方法进行视屏资源的替换是不行的。

  之后就想着通过js进行video路径的改写,但是由于html是一个web网页,并不是本地的,导致了其域不同,而且不单单是域不同,这是从http协议改到了file协议,因此产生了一个‘NOT ALLOWED TO LOAD LOCAL RESOURCE‘的错误。

  以上两个路走不通,最后只能通过webserver将本地的资源转换成web资源。webserver实现方式可以使用AndroidAsync这个框架,或者nanohttpd也可以。在本地起一个服务进行webserver的开启,同时在html中将video的路径用js函数进行处理,在android中操作这个js函数进行路径的动态改写。

  webserver在android上路径设为127.0.0.1之后速度接近cpu速度,基本上可以看成直接操作本地文件,同时也解决了跨域问题和安全性的问题,在遇到无法使用api进行替换的资源时,可以考虑使用这种方式。

webview资源本地化的一种实现方式

原文:http://www.cnblogs.com/Sample1994/p/7376337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!