至于为什么要这样,不解释!
1、javaScript 访问 java
- a、允许javaScrip访问java
- b、通过映射建立java与javaScript的连接
- c、加载包含该javaScript的网页
<!-- a 示例代码-->
mWebView= (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
<!-- b 示例代码 -->
mWebView.addJavascriptInterface(new MediaJsInteration(this),"mediaController");
<!-- c示例代码-->
mWebView.loadUrl(urlPath);
其中MediaJsInteration是与javaScript交互的java代码,就是供javaScript调用的代码;
public class MediaJsInteration {
private Context mContext;
public MediaJsInteration(Context context)
{
this.mContext=context;
}
@JavascriptInterface
public void test()
{
}
}
记得一定要带@JavascriptInterface
2、java 访问 javaScript
通过WebView.loadUrl()方法来调用javaScript的方法;
function callFromJava(str){
console.log(str);
}
Java端调用Javascript方法:
public void javaCallJS(){
webView.loadUrl("javascript:callFromJava('call from java')");
}
可以在loadUrl中直接给Javascript方法直接传值,如果Javascript方法有返回值,而WebView.loadUrl()是无法获取到返回值的,如果需要Javascript返回值给Java,可以定义一个Java方法给JavaScript调用把返回值传递给Java。
注意WebView.loadUrl()必须在Ui线程中运行,不然会会报错。