Java和js的交互:
1. Java端调用js的方法
2. Js调用java端的方法
Java端:(android)
1. 布局文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
android:id="@+id/btn_javaToJs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Java调用js的代码"
/>
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
1.点击按钮调用html中的js方法:
MainActivity:
btn_javaToJs.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View view) {
//这里的jsMethod();就是网页的js方法
webView.loadUrl("javascript:jsMethod('来自Java的调用')");
}
});
Html:
function jsMethod(param) {
alert("====");
document.getElementById("content").innerHTML= "Java has invoked JS function andreturndthe data:"+param;
}
测试:
2. js访问Java的方法:
java:
//定义java的方法
class JavaMethods{
//因为安全问题,在Android4.2中(如果应用的android:targetSdkVersion数值为17+)JS只能访问带有 @JavascriptInterface注解的Java函数。
@JavascriptInterface
privatevoid javaMethod(String str){
Toast.makeText(getApplicationContext(),"从js传来的参数是:" + str,
Toast.LENGTH_LONG).show();
Log.i("JsParam","来自js的参数:"+str);}
}
//绑定Java对象到WebView,这样可以让JS与Java通信(JS访问Java方法)第一个参数是自定义类对象,映射成JS对象第二个参数是第一个参数的JS别名
webView.addJavascriptInterface(newJavaMethods(),"javaMethod");
html:
测试: