Webview Dynamic Injection of js scripts and webviewjs scripts
After the webview is loaded, add a local click event to all img tabs.
/** Function () {var objs = document. getElementsByTagName ('img '); for (var I = 0; I <objs. length; I ++) {objs [I]. onclick = function () {window. toolbox. openImage (I, this. src) ;}}; ** // inject js function to listen to public void injectImgClick () {mWebView. loadUrl ("javascript :( function () {var objs = document. getElementsByTagName ('img '); for (var I = 0; I <objs. length; I ++) {objs [I]. onclick = function () {window. toolbox. openImage (I, this. src );};}})()");}
Then
webview.getSettings().setJavaScriptEnabled(true);webview.addJavascriptInterface(new Object(){ @JavascriptInterface public void openImage(int i, String src) { ArrayList<String> list = new ArrayList<String>(); list.add(src); mActivity.startActivity(new Intent(mActivity, PhotoViewActivity.class).putExtra(PhotoViewActivity.EXTRA_PHOTOS, list) .putExtra(PhotoViewActivity.EXTRA_TYPE, PhotoViewActivity.TYPE_VIEW)); }}, "toolbox");
Inject script code after page data is loaded
webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); injectImgClick(); }});
In this way, you can click to open the local image browsing interface.