webView = (WebView) findViewById(R.id.info_detail_webview);
WebSettings webSettings = webView.getSettings();
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setJavaScriptEnabled(true); // 添加js交互接口类,并起别名 imagelistner
LogUtil.verbose("json", "url= " + newsList.Url);
webView.loadUrl(newsList.Url); // 添加js交互接口类,并起别名 imagelistner
webView.addJavascriptInterface(new JavascriptInterface(this), "imagelistner");
webView.setWebViewClient(new MyWebViewClient());

监听接口:

    // js通信接口
public class JavascriptInterface { private Context context; public JavascriptInterface(Context context) {
this.context = context;
} public void openImage(String img) {
LogUtil.verbose("json", "img= " + img);
Intent intent = new Intent();
intent.putExtra("image", img);
intent.setClass(context, ShowWebImageActivity.class);
context.startActivity(intent);
}
} // 注入js函数监听
private void addImageClickListner() {
// 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去
webView.loadUrl("javascript:(function(){" +
"var objs = document.getElementsByTagName(\"img\"); " +
"for(var i=0;i<objs.length;i++) " +
"{"
+ " objs[i].onclick=function() " +
" { "
+ " window.imagelistner.openImage(this.src); " +
" } " +
"}" +
"})()");
}

重写WebViewClient:

    /** 监听WebView加载URL进度  **/
class MyWebViewClient extends WebViewClient { @Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
view.getSettings().setJavaScriptEnabled(true);
// html加载完成之后,添加监听图片的点击js函数
addImageClickListner(); hideTopProgressBar();
super.onPageFinished(view, url);
} @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
return super.shouldOverrideUrlLoading(view, url);
} @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
view.getSettings().setJavaScriptEnabled(true);
super.onPageStarted(view, url, favicon);
} }

拦截系统Back事件:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
// 拦截系统的返回事件 调用webview的
if(webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK){
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

最新文章

  1. GJM : AlloyTouch实战--60行代码搞定QQ看点资料卡
  2. 网站压力负载测试工具:Web版已逝,只好送大伙单机版
  3. Ubuntu 13.10看视频休眠
  4. [AIR] AIR 应用程序的调用和终止
  5. offsetParent详解
  6. p4-hlir/test源码 stateful.p4 control_flow_opt.p4
  7. c 函数及指针学习 4
  8. linux挂载文件
  9. LInux系统的C语言开发工具笔记
  10. iOS开发关于xcode中souceControl的苹果文档翻译(节选)
  11. yii2 查询构建器
  12. Minor GC、Major GC和Full GC之间的区别
  13. zepto 事件分析2($.on)
  14. 掌握闭包closure (含义及优缺点)
  15. 1.23 codeforces div3 C.Nice Garland
  16. Centos 6.9 安装Rabbitmq
  17. 【Android】 导入项目报错的解决方案
  18. 深入理解基于selenium的二次开发
  19. offset宏的讲解【转】
  20. jQuary总结6:元素的操作

热门文章

  1. php里ezpdo orm框架初探
  2. Web应用程序安全必须重视八大问题
  3. FreeMarker在JAVA中应用入门
  4. [翻译][MVC 5 + EF 6] 12[完结]:高级场景
  5. 当linux遇上多网卡时
  6. 写 一个PHP脚本遇到的问题总结
  7. php eval函数用法总结
  8. (转载)Delphi TStringList的用法
  9. Python 守护进程
  10. poj 2778 DNA Sequence ac自动机+矩阵快速幂