今天介绍一下怎么查看WebView里面的图片,首先要设置WebView能够支持JavaScript,然后实现JavaScript的监听接口:
1 mWebView.getSettings().setJavaScriptEnabled(true); 2 mWebView.addJavascriptInterface( 3 new JavascriptInterface(this.getActivity()), "ImageListener");
下面是JavaScript接口的代码:
1 /* 2 * javascript interface 3 */ 4 public class JavascriptInterface { 5 private Context context; 6 7 public JavascriptInterface(Context context) { 8 this.context = context; 9 } 10 11 public void ClickImage(String imageUrl) { 12 Intent intent = new Intent(); 13 intent.putExtra("ImageUrl", imageUrl); 14 LogHelper.i(imageUrl); 15 intent.setClass(context, WebViewImageActivity.class); 16 context.startActivity(intent); 17 } 18 }
在WebView的图片上添加事件:
1 private void InjectWebViewClickListener() { 2 StringBuilder str = new StringBuilder(); 3 str.append("javascript:(function(){"); 4 str.append("$('img').each(function(idx,obj){"); 5 str.append("$(obj).click(function(){"); 6 str.append("window.ImageListener.ClickImage($(obj).attr('src'));"); 7 str.append("});});})()"); 8 mWebView.loadUrl(str.toString()); 9 }
最后在WebView的WebViewClient里调用这个事件:
1 mWebView.setWebViewClient(new WebViewClient() { 2 @Override 3 public void onReceivedError(WebView view, int errorCode, 4 String description, String failingUrl) { 5 super.onReceivedError(view, errorCode, description, failingUrl); 6 } 7 8 @Override 9 public void onPageFinished(WebView view, String url) { 10 super.onPageFinished(view, url); 11 // html加载完成之后,添加监听图片的点击js函数 12 InjectWebViewClickListener(); 13 } 14 15 });