在本地UI使用webview,在html页面用js与android通信方法。

实现的方法是将数据通过js传递到html页面中。
android中的关键代码:
       webview.getSettings().setJavaScriptEnabled(true);
       webview.addJavascriptInterface(object,”name”);//把object添加到window中。Name=”name”;
      webview.loadUrl(“file:///android_asset/index.html”);//注意这个资源的位置是跟res并列的文件夹下。
js或html中调用android中方法代码:
         如:<a onClick=”window.name.java中的方法()”>
         或js中 window.name.java中的方法();
android中调用js的function方法:
         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++){
                var jsdata= window.javatojs.getObject(n);//拿到activity里面的属性javadata
            var datalistdiv = 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源码:




public class JavaToWebview extends Activity {
 
    private WebView web;
    public List list;
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initData();
        setContentView(R.layout.webview);
        web = (WebView)this.findViewById(R.id.webview);
        web.getSettings().setJavaScriptEnabled(true);//开启javascript设置
        web.addJavascriptInterface(this, "javatojs");//把RIAExample的一个实例添加到js的全局对象window中, //这样就可以使用window.javatojs来调用它的方法
        web.loadUrl("file:///android_asset/demo5.html");//加载网页
 
    }
    void initData(){
               list=new ArrayList();
          for(int i=0;i

你可能感兴趣的:(JavaScript,html,android,UI,function,list)