<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    開花流水

    空山無人,水流花開。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      79 Posts :: 42 Stories :: 160 Comments :: 0 Trackbacks

    android中的關鍵代碼:

    webview.getSettings().setJavaScriptEnabled(true);

    webview.addJavascriptInterface(object,"name");//把Name="name"的對象添加到object中。object如果是this,就是window.name

    webview.loadUrl("file:///android_asset/index.html");//注意這個資源的位置是跟res并列的文件夾下。

     

    js或html中調用android中方法代碼:

             如: 

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

    android中調用js的function方法:

             Callfunction(){

          webview.loadUrl("javascript: function ()");

    }

    需要注意的地方,很多數據類型js中不認識,最好是在android那邊封裝好,提供必要的方法接口。比如傳到js中的list,在js中是沒辦法去得到里面的元素的。

    addJavascriptInterface:addJavascriptInterface方法中要綁定的Java對象及方法要運行在另外的線程中,不能運行在構造他的線程中,也就是說不能運行在當前的activity線程中,就是把這個方法綁定到頁面中,js也可以調用

    文檔中的解釋:


    Use this function to bind an object to Javascript so that the methods can be accessed from Javascript.

    The Java object that is bound runs in another thread and not in the thread that it was constructed in.





    Demo代碼:

    JavaJsDemo.java

    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()");
    }
    }

    index.html



    DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>demotitle>
    <script language="javascript">
    function GetList(){
    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>
    head>
    <body onload="javascript:window.javatojs.Callfunction()">//調用java方法
    <div id = "datalist">
    this is a demo
    div>
    body>
    html>
    posted on 2010-11-01 14:22 開花流水 閱讀(30362) 評論(1)  編輯  收藏 所屬分類: android

    Feedback

    # re: Android ---js與java的相互調用 2010-11-01 14:25 開花流水
    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<String>();
    for(int i=0;i<5;i++){
    list.add("我是從數據庫中讀取的哈哈");
    }
    }
    /**
    * 該方法將在js腳本中,通過window.javatojs.....()進行調用
    * @return
    */
    public Object getObject(int index){
    return list.get(index);
    }
    public int getSize(){
    return list.size();
    }
    }  回復  更多評論
      

    主站蜘蛛池模板: 老司机午夜在线视频免费 | 久久亚洲国产成人影院| 午夜小视频免费观看| 激情婷婷成人亚洲综合| 亚洲综合国产一区二区三区| 久久综合给合久久国产免费| 亚洲伦理中文字幕| 2048亚洲精品国产| 中文字幕乱码免费视频| 午夜亚洲国产精品福利| 亚洲国产精品久久久久| 成人一a毛片免费视频| 日韩免费高清播放器| 久久精品国产亚洲AV久| 国产亚洲色婷婷久久99精品91| 99久9在线|免费| 老司机精品视频免费| 亚洲美女视频免费| 亚洲精品无码激情AV| 永久免费av无码网站韩国毛片| 一级毛片aa高清免费观看| 亚洲第一区视频在线观看| 亚洲国产一区明星换脸| 日本在线高清免费爱做网站| 亚洲免费一区二区| 亚洲日本一线产区和二线| 亚洲精品在线观看视频| 亚洲高清成人一区二区三区| 色se01短视频永久免费| a级毛片免费观看视频| 色噜噜噜噜亚洲第一| 亚洲国产精品专区| 国产aⅴ无码专区亚洲av| 又黄又爽一线毛片免费观看| 18国产精品白浆在线观看免费| 国产又黄又爽又大的免费视频| 久久亚洲中文字幕无码| 亚洲av永久无码精品天堂久久| 亚洲av永久无码制服河南实里| 亚洲人成影院在线观看| 在线精品免费视频|