安卓webview加载网页实现网页翻译
前言
说下应用场景,最近安卓要加载一些第三方网站进行用户的开放使用,这些第三方网站基本都是全英文的外国网站,于是产品需求希望能对网站进行中文翻译,类似pc浏览器的谷歌翻译网页
使用步骤
1.注入脚本
代码如下(示例):
private void translateWeb() {String javaScript = "javascript:function appendScrip() {" +"var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.src= 'https://res.zvo.cn/translate/translate.js'; head.appendChild(script);" +"}" +"appendScrip();";bwvContent.evaluateJavascript(javaScript, new ValueCallback<String>() {@Overridepublic void onReceiveValue(String s) {MyLogUtils.e("javaScript.onReceiveValue:" + s);bwvContent.postDelayed(new Runnable() {@Overridepublic void run() {if (bwvContent==null) {return;}String javaScript2 = "javascript:function startTranslate() {" +"translate.localLanguage='zh-CN';translate.selectLanguageTag.show = false;translate.executeByLocalLanguage();" +"}" +"startTranslate();";bwvContent.evaluateJavascript(javaScript2, new ValueCallback<String>() {@Overridepublic void onReceiveValue(String s) {MyLogUtils.e("javaScript2.onReceiveValue:" + s);}});}}, 500);}});}
注意点
1.这里的bwvContent用的是腾讯的webview,在执行注入脚本的时候用的evaluateJavascript方法,原生webview如果没有的话用loadurl也可
2.第一段脚本注入和第二段脚本注入加了个500ms的延时操作,因为实测过程中,连续执行的情况下容易没能顺利进行翻译,所以加了个500ms加高成功率,可自行调试测试
3.该方法的注入,选择时机放在了onProgressChanged回调里,当加载进度progress==100时,进行延时1000ms后执行该方法做自动网页翻译,或者由用户手动点击翻译按钮的时候调用,时机的选择自行调试
使用的注入脚本的相关链接:网页多语言翻译 js v1.2,更新翻译接口 - OSCHINA - 中文开源技术交流社区
总结
整体效果还是比较流畅,使用也是比较简单,这里我做的是翻译为中文,根据需要将zh-CN换en等语言便可,甚至自己拓展切换按钮等
安卓webview加载网页实现网页翻译相关推荐
- android webview加载不出来,【新手有关问题】Android浏览器中WebView加载不出网页
当前位置:我的异常网» Android » [新手有关问题]Android浏览器中WebView加载不出网 [新手有关问题]Android浏览器中WebView加载不出网页 www.myexcepti ...
- 关于安卓webview加载网页黑屏、部分黑屏或blank的解决方法
很多朋友在利用安卓的webview加载网页的时候 可能会出现黑屏现象 这种情况出现在Android4.4版本以上比较多 第一点的版本可能是blank空白.然后 有些朋友会在不断的修改webview的一 ...
- 利用web实现android的界面,利用WebView加载手机端网页实现APP封装
**思路 : ** 安卓端只使用一个Activity 此Activity中只包含WebView这个控件 并且隐藏此Activity的标题栏 这样只要我们前端对手机浏览器的适配做的很好 我们这个WebV ...
- 安卓WebView加载网页不显示或者乱跳问题
2019独角兽企业重金招聘Python工程师标准>>> 也是刚接触安卓不久,有什么不对的还望海涵或指点............. 最近在安卓上使用 WebView的时候,会遇到不能正 ...
- 安卓 webview加载html图片自适应手机屏幕大小和点击查看大图
我们在开发中,显示信息详情时,一般后台会给出html文本,在android端一般采用webview控件来展示,但是后台给出的html文本一般是给电脑端用的,没有自适配手机,导致手机端图片显示过大,需要 ...
- webView加载不出网页的一种可能情况
我的webview的Java代码里有以下内容 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(s ...
- android 4.4 webview加载部分https网页白屏
private void initWebview(){//mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);//mWebView.setLay ...
- Android WebView 加载富文本内容
WebView加载数据的方式有两种: 1. webView.loadUrl(data);//加载url 2. webView.loadDataWithBaseURL(null,data, " ...
- webview加载网页空白或者不全的问题
背景是:这几天项目上线,去项目支持,本人是做安卓开发的,用的是混合开发,webview加载网页偶尔显示不全,只显示网页的背景色,还真是第一次碰见这个问题.IOS没有这个问题,还以为是webview的问 ...
最新文章
- 海洋分享皮肤_最稀有的军需皮肤,外号第一代身法套,如今都进了素材包
- ubuntu 退出anaconda环境_ubuntu 安装两个Anaconda,并迁移虚拟环境
- 1.2 一维数组的定义、赋值和初始化
- VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
- 电饼锅的样式图片价格_2020年三明治机/电饼铛推荐选购指南,电饼档那个牌子好?有哪些好用的三明治机/早餐机/电饼铛?...
- 学成在线--7.CMS页面管理开发(异常处理)
- 原来咱们公司准备裁员还有一部份原因是这样的!
- SpringSecurity的认识和整合流程
- c 命令行简易计算器
- 1.Spring框架入门
- [脚本] 一个用于BMP到EPS转换的BAT脚本实现(需要安装bmeps)
- javaweb 获取服务器整个文件夹下的文件_详细得不要不要的 JavaWeb快速入门,值得收藏!...
- centos7恢复mysql数据库_MySQL数据库之Centos7.3,mysql5.7环境,数据存储空间加大调整方案...
- 【VFB】复制VB代码(VB与FB的差异)(VFB教程3-6)
- 基于51单片机的交通灯控制系统设计
- Java打包后运行找不到资源文件问题
- bcn_timout,ap_probe_send_start
- 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
- 页面置换算法-LRU
- Python中文件路径