Android JS 交互=坑
Android调用js
1、在Android中
htmlWeb.addJavascriptInterface(this, "android"); //需要操作的事件 @JavascriptInterface public void startActivity() { }
2、在js中
<div> onclick="callAndroid" </div> <script type="text/javascript"> funtion callAndroid(){ //window js的打开新窗口方法 //android htmlWeb.addJavascriptInterface(this, "android"); //startActivity() Android中的由于交互的方法 window.android.startActivity(); } </script>
JS调用Android
在Js中
在Android中 runOnUiThread(new Runnable() { @Override public void run() { //fileName js需要的值 //show() js中的方法 myWebView.loadUrl("javascript:show('" + fileName + "')"); } });
注意:
在交互时更新UI 的话 一定要切换回主线程 例如:截图、分享
/** * Tencent x5webview截长图 * * @param webView * @return */ fun getX5WebViewBtpBase64Str(webView: WebView?): Bitmap? { if (webView == null) { return null } val wholeWidth = webView.contentWidth val wholeHeight = webView.contentHeight val x5bitmap = Bitmap.createBitmap( wholeWidth, wholeHeight, Bitmap.Config.RGB_565 ) val x5canvas = Canvas(x5bitmap) // x5canvas.scale((float) wholeWidth / (float) webView.getContentWidth(), (float) wholeHeight / (float)webView.getContentHeight()); if (webView.x5WebViewExtension == null) { return null } val ix5WebViewExtension: IX5WebViewExtension = webView.x5WebViewExtension ix5WebViewExtension.snapshotWholePage(x5canvas, false, false) return Bitmap.createBitmap(x5bitmap) }