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

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

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

    開(kāi)花流水

    空山無(wú)人,水流花開(kāi)。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      79 Posts :: 42 Stories :: 160 Comments :: 0 Trackbacks

    android中的關(guān)鍵代碼:

    webview.getSettings().setJavaScriptEnabled(true);

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

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

     

    js或html中調(diào)用android中方法代碼:

             如: 

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

    android中調(diào)用js的function方法:

             Callfunction(){

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

    }

    需要注意的地方,很多數(shù)據(jù)類型js中不認(rèn)識(shí),最好是在android那邊封裝好,提供必要的方法接口。比如傳到j(luò)s中的list,在js中是沒(méi)辦法去得到里面的元素的。

    addJavascriptInterface:addJavascriptInterface方法中要綁定的Java對(duì)象及方法要運(yùn)行在另外的線程中,不能運(yùn)行在構(gòu)造他的線程中,也就是說(shuō)不能運(yùn)行在當(dāng)前的activity線程中,就是把這個(gè)方法綁定到頁(yè)面中,js也可以調(diào)用

    文檔中的解釋:


    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);
    //開(kāi)啟javascript設(shè)置
    web.getSettings().setJavaScriptEnabled(true);
    //把RIAExample的一個(gè)實(shí)例添加到j(luò)s的全局對(duì)象window中
    //這樣就可以使用window.javatojs來(lái)調(diào)用它的方法
    web.addJavascriptInterface(this, "javatojs");
    //加載網(wǎng)頁(yè)
    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腳本中,通過(guò)window.javatojs.....()進(jìn)行調(diào)用
    * @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"); //得到頁(yè)面的div
    pnode = document.createElement("p");//創(chuàng)建一個(gè)p標(biāo)簽,再建個(gè)textnode
    tnode = document.createTextNode(jsdata);
    pnode.appendChild(tnode);//p中加入數(shù)據(jù)
    datalistdiv.appendChild(pnode);//div中鍵入新的p
    }
    }
    script>
    head>
    <body onload="javascript:window.javatojs.Callfunction()">//調(diào)用java方法
    <div id = "datalist">
    this is a demo
    div>
    body>
    html>
    posted on 2010-11-01 14:22 開(kāi)花流水 閱讀(30369) 評(píng)論(1)  編輯  收藏 所屬分類: android

    Feedback

    # re: Android ---js與java的相互調(diào)用 2010-11-01 14:25 開(kāi)花流水
    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);//開(kāi)啟javascript設(shè)置
    web.addJavascriptInterface(this, "javatojs");//把RIAExample的一個(gè)實(shí)例添加到j(luò)s的全局對(duì)象window中, //這樣就可以使用window.javatojs來(lái)調(diào)用它的方法
    web.loadUrl("file:///android_asset/demo5.html");//加載網(wǎng)頁(yè)

    }
    void initData(){
    list=new ArrayList<String>();
    for(int i=0;i<5;i++){
    list.add("我是從數(shù)據(jù)庫(kù)中讀取的哈哈");
    }
    }
    /**
    * 該方法將在js腳本中,通過(guò)window.javatojs.....()進(jìn)行調(diào)用
    * @return
    */
    public Object getObject(int index){
    return list.get(index);
    }
    public int getSize(){
    return list.size();
    }
    }  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲男人天堂2018av| 2021在线永久免费视频| 亚洲国产高清在线精品一区| xvideos亚洲永久网址| 亚洲免费视频播放| 最近中文字幕大全免费版在线| 亚洲成a人片在线不卡一二三区 | 久久综合日韩亚洲精品色| 国产成人无码免费视频97| 亚洲电影在线免费观看| 最近中文字幕大全免费版在线| 国产精品亚洲一区二区三区在线观看 | 亚洲男人在线无码视频| 免费黄色一级毛片| 免费福利在线播放| 日韩视频在线观看免费| aa毛片免费全部播放完整| 男性gay黄免费网站| 亚洲永久网址在线观看| 亚洲喷奶水中文字幕电影| 亚洲激情在线视频| 亚洲AV无码专区国产乱码电影| 亚洲Av无码乱码在线观看性色| 啦啦啦www免费视频| 毛片A级毛片免费播放| 免费在线视频你懂的| 19禁啪啪无遮挡免费网站| 亚洲精品免费在线观看| 国产精品白浆在线观看免费| 中文字幕无线码免费人妻| 一级特黄a免费大片| 一级做a爰片久久毛片免费陪| 国产成人不卡亚洲精品91| 久久水蜜桃亚洲AV无码精品| 国产成人亚洲综合网站不卡| 亚洲五月丁香综合视频| 亚洲天堂2016| 亚洲精品久久无码av片俺去也| 亚洲精品无AMM毛片| 欧美激情综合亚洲一二区| 美女黄网站人色视频免费|