<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();
    }
    }  回復  更多評論
      

    主站蜘蛛池模板: xxx毛茸茸的亚洲| 亚洲二区在线视频| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲午夜国产精品无码 | 亚洲AV色无码乱码在线观看| 两性刺激生活片免费视频| 亚洲精品白色在线发布| 4444www免费看| 国产精品亚洲片在线va| 无人影院手机版在线观看免费| 亚洲日产2021三区在线| 中文字幕亚洲激情| 七次郎成人免费线路视频| 亚洲AV无码乱码精品国产| av网站免费线看| 亚洲精品国产精品乱码不卡√| 日本道免费精品一区二区| 亚洲成AV人片在| 国产免费不卡视频| 亚洲精品久久无码| 亚洲Av无码乱码在线观看性色| 国产日韩精品无码区免费专区国产 | 免费国产黄网站在线观看视频 | 18女人毛片水真多免费| 亚洲国产成人九九综合| 妞干网免费观看视频| 国产精品亚洲精品爽爽| 亚洲性猛交XXXX| 59pao成国产成视频永久免费| 亚洲人妖女同在线播放| 四虎免费久久影院| 日韩免费高清播放器| 亚洲一本之道高清乱码| 免费日韩在线视频| 大地资源中文在线观看免费版| 亚洲欧洲日韩国产| 免费在线精品视频| 91九色老熟女免费资源站| 日韩在线视精品在亚洲| 亚洲AV本道一区二区三区四区| 无码免费午夜福利片在线|