前言

说下应用场景,最近安卓要加载一些第三方网站进行用户的开放使用,这些第三方网站基本都是全英文的外国网站,于是产品需求希望能对网站进行中文翻译,类似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加载网页实现网页翻译相关推荐

  1. android webview加载不出来,【新手有关问题】Android浏览器中WebView加载不出网页

    当前位置:我的异常网» Android » [新手有关问题]Android浏览器中WebView加载不出网 [新手有关问题]Android浏览器中WebView加载不出网页 www.myexcepti ...

  2. 关于安卓webview加载网页黑屏、部分黑屏或blank的解决方法

    很多朋友在利用安卓的webview加载网页的时候 可能会出现黑屏现象 这种情况出现在Android4.4版本以上比较多 第一点的版本可能是blank空白.然后 有些朋友会在不断的修改webview的一 ...

  3. 利用web实现android的界面,利用WebView加载手机端网页实现APP封装

    **思路 : ** 安卓端只使用一个Activity 此Activity中只包含WebView这个控件 并且隐藏此Activity的标题栏 这样只要我们前端对手机浏览器的适配做的很好 我们这个WebV ...

  4. 安卓WebView加载网页不显示或者乱跳问题

    2019独角兽企业重金招聘Python工程师标准>>> 也是刚接触安卓不久,有什么不对的还望海涵或指点............. 最近在安卓上使用 WebView的时候,会遇到不能正 ...

  5. 安卓 webview加载html图片自适应手机屏幕大小和点击查看大图

    我们在开发中,显示信息详情时,一般后台会给出html文本,在android端一般采用webview控件来展示,但是后台给出的html文本一般是给电脑端用的,没有自适配手机,导致手机端图片显示过大,需要 ...

  6. webView加载不出网页的一种可能情况

    我的webview的Java代码里有以下内容 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(s ...

  7. android 4.4 webview加载部分https网页白屏

    private void initWebview(){//mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);//mWebView.setLay ...

  8. Android WebView 加载富文本内容

    WebView加载数据的方式有两种: 1. webView.loadUrl(data);//加载url 2. webView.loadDataWithBaseURL(null,data, " ...

  9. webview加载网页空白或者不全的问题

    背景是:这几天项目上线,去项目支持,本人是做安卓开发的,用的是混合开发,webview加载网页偶尔显示不全,只显示网页的背景色,还真是第一次碰见这个问题.IOS没有这个问题,还以为是webview的问 ...

最新文章

  1. 海洋分享皮肤_最稀有的军需皮肤,外号第一代身法套,如今都进了素材包
  2. ubuntu 退出anaconda环境_ubuntu 安装两个Anaconda,并迁移虚拟环境
  3. 1.2 一维数组的定义、赋值和初始化
  4. VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
  5. 电饼锅的样式图片价格_2020年三明治机/电饼铛推荐选购指南,电饼档那个牌子好?有哪些好用的三明治机/早餐机/电饼铛?...
  6. 学成在线--7.CMS页面管理开发(异常处理)
  7. 原来咱们公司准备裁员还有一部份原因是这样的!
  8. SpringSecurity的认识和整合流程
  9. c 命令行简易计算器
  10. 1.Spring框架入门
  11. [脚本] 一个用于BMP到EPS转换的BAT脚本实现(需要安装bmeps)
  12. javaweb 获取服务器整个文件夹下的文件_详细得不要不要的 JavaWeb快速入门,值得收藏!...
  13. centos7恢复mysql数据库_MySQL数据库之Centos7.3,mysql5.7环境,数据存储空间加大调整方案...
  14. 【VFB】复制VB代码(VB与FB的差异)(VFB教程3-6)
  15. 基于51单片机的交通灯控制系统设计
  16. Java打包后运行找不到资源文件问题
  17. bcn_timout,ap_probe_send_start
  18. 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
  19. 页面置换算法-LRU
  20. Python中文件路径

热门文章

  1. 决策树、随机森林——泰坦尼克号生死预测示例
  2. Docker超详细教程
  3. 信号处理之宽带的匹配滤波
  4. 空间转录组实战01: SpaceRanger定量
  5. commondialog中保存或另存为的使用方法
  6. 福利:送10本《增长黑客》+ 读书笔记
  7. EDAS入门随记(一)
  8. 脱虚向实,加速区块链产业落地 首届全球区块链产业投资洽谈会厦门成功举办
  9. C语言:函数指针与指针函数
  10. ZeroMemory