之前曾经写过一篇关于通过注入js获取并放大webview图片的博客,但是最近项目又有了新的需求,需要点击webview中某张图后,获得该网页的所有图片,并且跳转后要跳到该图片对应的索引位置,因此就必须要修改原来的js了:
// 注入js函数监听
private void addImageClickListner() {
// 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,函数的功能是在图片点击的时候调用本地java接口并传递url过去,获取该页所有图片存到picArray中并且获得点击图片的位置
webview.loadUrl("javascript:(function(){" + "var objs = document.getElementsByTagName(\"img\"); "
+"var picArray = new Array(); "+"for(var i=0;i<objs.length;i++) " + "{" +" picArray[i] = objs[i].src " + " } "
+ "for(var i=0;i<objs.length;i++) " + "{" +" objs[i].index = i; "+" objs[i].οnclick=function() " + " { "
+ " window.imagelistner.openImage(picArray,this.index); " + " } " + "}" + "})()");
}
// js通信接口
public class JavascriptInterface {
private Context context;
public JavascriptInterface(Context context) {
this.context = context;
}
@android.webkit.JavascriptInterface
public void openImage(String[] img,int index) {
ArrayList<String> picList = new ArrayList<String>();
Intent intent = new Intent();
for(int i=0;i<img.length;i++){
picList.add(img[i]);
}
//picList.add(img);
intent.putExtra("picList", picList);
intent.putExtra("position",index);
intent.setClass(context, ExpandPicActivity.class);
context.startActivity(intent);
}
}