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

    主站蜘蛛池模板: 亚洲日本在线免费观看| 99在线热视频只有精品免费| 亚洲一区在线视频| 国产成人精品久久亚洲高清不卡 | 国产福利视精品永久免费| 国产免费MV大全视频网站| 国产精品久久亚洲一区二区| 亚洲精品二三区伊人久久| 亚洲精品私拍国产福利在线| 亚洲精品无码高潮喷水在线| 亚洲成网777777国产精品| 色吊丝永久在线观看最新免费| 久草视频免费在线观看| 无码日韩精品一区二区三区免费 | 在线观看免费a∨网站| **aaaaa毛片免费| 久久大香伊焦在人线免费| 中文字幕免费视频精品一| sss在线观看免费高清| 污污视频免费观看网站| 亚洲第一成年免费网站| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 最近2019中文字幕免费看最新| 国产在线观看麻豆91精品免费| 一级毛片全部免费播放| 久久久久免费看成人影片| 黄色免费在线网站| 免费毛片a线观看| 在线成人精品国产区免费| 国产午夜不卡AV免费| 嫩草成人永久免费观看| 免费萌白酱国产一区二区三区| 国产中文字幕在线免费观看| 好吊色永久免费视频大全| 好湿好大好紧好爽免费视频| 9久热这里只有精品免费| 国产又黄又爽又大的免费视频| 成全视频在线观看免费| 污视频在线观看免费| 5555在线播放免费播放| 成人无码区免费A片视频WWW |