js调用Android原生代码里的方法
mWebviewContent.requestFocus();
WebSettings setting = mWebviewContent.getSettings();
setting.setDefaultTextEncodingName("utf-8");
setting.setLoadWithOverviewMode(true);
setting.setUseWideViewPort(true);
setting.setJavaScriptEnabled(true);
setting.setJavaScriptCanOpenWindowsAutomatically(true);
setting.setDatabaseEnabled(true);
setting.setDomStorageEnabled(true);
setting.setAllowContentAccess(true);
setting.setAllowFileAccess(true);
setting.setAllowFileAccessFromFileURLs(false);
setting.setAllowUniversalAccessFromFileURLs(false);
setting.setSupportZoom(true);
setting.setTextZoom(100);
mWebviewContent.addJavascriptInterface(new JavaScriptInterface(mContext, mWebviewContent), "app");
class JavaScriptInterface {
private Context context;
private WebView webView;
private JavaScriptInterface(Context context, WebView webView) {
this.context = context;
this.webView = webView;
}
@JavascriptInterface
public void showChoosePicDialog() {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
}
- 以上webview的一些设置可根据实际情况删减 , 但是开启允许互调的设置不可删 .
- 重点1 :
mWebviewContent.addJavascriptInterface(new JavaScriptInterface(mContext, mWebviewContent), "app");
这个里的"app"要对应上前端代码的参数 , 是什么都可以 , 但是两边一定要相同 . - 重点2 : 还是这句
mWebviewContent.addJavascriptInterface(new JavaScriptInterface(mContext, mWebviewContent), "app");
中 , new的这个JavaScriptInterface为你自己写的js可调用的那些方法上的类名 . - 重点3 : 给js提供可调用的方法要加
@JavascriptInterface
- 重点4 : 给js提供可调用的方法里的内容 , 要回到主线程执行 , 即
runOnUiThread
Android原生调用js里的方法
webView.loadUrl("javascript:webJS.reload(1)");
- 重点 :
webJS.reload()
为js那边的方法 , 方法名要和js那边一样 , 括号里的1为js里的本方法需要的传参 , 不需要传参的时候不传就可以 .
其他