android中webviewjs与java的相互调用

实现的方法是将数据通过js传递到html页面中。

android****中的关键代码:

webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(object,”name”);//把object添加到window中。Name=”name”;
webview.loadUrl(“file:///android_asset/index.html”);//注意这个资源的位置是跟res并列的文件夹下。

jshtml中调用android****中方法代码:

        如:

        或js中 window.name.java中的方法();

android中调用jsfunction****方法:

        Callfunction(){

               webview.loadUrl(“javascript: function ()”);

        }

需要注意的地方,很多数据类型js中不认识,最好是在android那边封装好,提供必要的方法接口。比如传到js中的list,在js中是没办法去得到里面的元素的。

以下是源码:

html的源码

<script language=”javascript“>
           window.onload= function(){
var i=window.javatojs.getSize();
                        for(var n=0;n<i;n++){
varjsdata= window.javatojs.getObject(n);//拿到activity里面的属性javadata
vardatalistdiv = document.getElementById(“datalist“); //得到页面的div
pnode = document.createElement(“p”);//创建一个p标签,再建个textnode
tnode = document.createTextNode(jsdata);
pnode.appendChild(tnode);//p中加入数据
datalistdiv.appendChild(pnode);//div中键入新的p
      }
}
</script>
<body>
<div id = “datalist“>
this is a demo
</body>

Android源码:

package com.demo.android.JavaJsDemo;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import java.util.ArrayList;
import java.util.List;
public class JavaJsDemo extends Activity {
/** Called when the activity is first created. */
private WebView web;
public List<String> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
setContentView(R.layout.main);
web = (WebView)this.findViewById(R.id.webview);
//开启javascript设置
web.getSettings().setJavaScriptEnabled(true);
//把RIAExample的一个实例添加到js的全局对象window中
//这样就可以使用window.javatojs来调用它的方法
web.addJavascriptInterface(this, "javatojs");
//加载网页
web.loadUrl("file:///android_asset/index.html");
}
void initData(){
list=new ArrayList<String>();
for(int i=0;i<5;i++){
list.add("我是List中的第"+(i+1)+"行");
}
}
/**
* 该方法将在js脚本中,通过window.javatojs.....()进行调用
* @return
*/
public Object getObject(int index){
return list.get(index);
}
public int getSize(){
return list.size();
}
public void Callfunction(){
web.loadUrl("javascript: GetList()");
}
}