<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精品视频在线观看免费专区| 中文字幕无码免费久久9一区9| 国产亚洲人成网站在线观看不卡| 国产传媒在线观看视频免费观看| 一级一级一级毛片免费毛片| 亚洲一区二区三区写真| 亚洲激情在线观看| 精品无码一区二区三区亚洲桃色| 中文字幕一精品亚洲无线一区| 亚洲成AV人片在线观看WWW| 亚洲一区二区三区播放在线| 美女羞羞免费视频网站| 春暖花开亚洲性无区一区二区| 一个人看的www在线免费视频| 亚洲成a人片在线不卡一二三区| 免费的黄色网页在线免费观看| 国产一级淫片视频免费看| 四虎精品成人免费视频| 久久亚洲中文字幕精品一区| 国产免费网站看v片在线| 久久亚洲精精品中文字幕| 久久久久久99av无码免费网站| 亚洲欧美成人综合久久久| 亚洲AⅤ永久无码精品AA| 久久99毛片免费观看不卡| 亚洲av无码片区一区二区三区| 国产美女被遭强高潮免费网站 | 国产又大又粗又硬又长免费| 日本免费精品一区二区三区| 亚洲av午夜成人片精品网站| 免费看韩国黄a片在线观看| 一级毛片免费不卡直观看| 亚洲人成亚洲精品| 国产麻豆免费观看91| 中国一级毛片免费看视频| 亚洲白色白色永久观看| 亚洲 小说区 图片区 都市| 久9这里精品免费视频| 亚洲AV成人一区二区三区观看 |