Java和js的交互,js调用java中的方法,同时java代码法调用js中的方法:
1. Java端调用js的方法
2. Js调用java端的方法
Java端:(android)
1. 布局文件
<span style="font-size:14px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!—点击按钮调用js方法-->
<Button
android:id="@+id/btn_javaToJs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Java调用js的代码"
/>
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout></span>
<span style="font-size:14px;">1.点击按钮调用html中的js方法:
MainActivity:
btn_javaToJs.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View view) {
//这里的jsMethod();就是网页的js方法
webView.loadUrl("javascript:jsMethod('来自Java的调用')");
}
});</span>
<span style="font-size:14px;">Html:
<body>
<pid="content"></p>
</body>
<script type="text/javascript"src="js/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
function jsMethod(param) {
document.getElementById("content").innerHTML= "Java has invoked JS function and returndthe data:"+param;
}
</script></span>
效果:
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:
<p> <inputtype="button" value="js调用java方法" οnclick="window.log.javaMethod('js调用java函数')" /></p>
测试结果: