首先定义一个供前端JS调用的类JavaScriptinterface(名字随便起):
public class JavaScriptinterface{
Context context;
public JavaScriptinterface(Context myContext) {
context= myContext;
}
//这里的stringFromJs从前端JS方法获取
@JavascriptInterface
public void showToast(String stringFromJs) {
Toast(context,stringFromJs, Toast.LENGTH_LONG).show();
}
}
然后再内嵌WebView的类中声明供JS调用的类并允许JS:
WebView webView=findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://xxx.xxx.xxx");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//这里第一个参数为供前端调用的类,第二个参数为前端调用时的类名,自己随便起
webView.addJavascriptInterface(new JavaScriptinterface(this),"className");
webSettings.setDomStorageEnabled(true);
configWebView(webView);
然后我们在前端的JS中想要调用showToast方法就很简单了:
className.showToast("这里写传递给安卓类方法的字符串")