Android中webView與javascript互動

來源:互聯網
上載者:User

主要是通過addJavaScipteInterface(Object obj,String Interfacename) 方法將一個java對象綁定到一個javaScipte對象中,javaScripte對象名就是interfaceName

package com.king.android.net;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

import com.king.android.R;

/**

 * 描述:webview與js互用
 * 作者:Andy.Liu
 * 時間: 2012-7-26  上午08:24:06
 **/
public class WebAndJsActivity extends Activity {
    private WebView mWebView = null;
    private PersonalData mPersonalData;        //儲存資料
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.webview_layout);
        mPersonalData = new PersonalData();
        mWebView = (WebView) findViewById(R.id.wv_view);
        mWebView.getSettings().setJavaScriptEnabled(true);
        //把本類的一個執行個體添加到javascript全域對象window中,這樣就可以使用windowPersonData來調用它的方法
        mWebView.addJavascriptInterface(this, "PersonalData");
        //載入網頁
        mWebView.loadUrl("file://android_asset/PersonalData.html");
    }
    
    public PersonalData getPersonalData(){
        return mPersonalData;
    }

    //js指令碼中調用顯示的資料
    class PersonalData
    {
        String  mID;
        String  mName;
        String  mAge;
        String  mBlog;    
        public PersonalData()
        {
            this.mID="123456789";
            this.mName="Android";
            this.mAge="100";
            this.mBlog="http://xxx.javaeye.com";
        }
        public String getID()
        {
            return mID;
        }
        public String getName()
        {
            return mName;
        }
        public String getAge()
        {
            return mAge;
        }
        public String getBlog()
        {
            return mBlog;
        }
    }

}

js指令碼:window.onload= function(){

    var personaldata = window.PersonalData.getPersonalData();
    if(personaldata)
    {
        var Personaldata = document.getElementById("Personaldata");
    pnode = document.createElement("p");
        tnode = document.createTextNode("ID:" + personaldata.getID());
        pnode.appendChild(tnode);
        Personaldata.appendChild(pnode);
    pnode = document.createElement("p");
        tnode = document.createTextNode("Name:" + personaldata.getName());
        pnode.appendChild(tnode);
        Personaldata.appendChild(pnode);
    pnode = document.createElement("p");
        tnode = document.createTextNode("Age:" + personaldata.getAge());
        pnode.appendChild(tnode);
        Personaldata.appendChild(pnode);
    pnode = document.createElement("p");
        tnode = document.createTextNode("Blog:" + personaldata.getBlog());
        pnode.appendChild(tnode);
        Personaldata.appendChild(pnode);
    }    

 

  當然java代碼中也可以直接調用js方法,這樣就可以互相調用取得資料。

webView.loadUrl("javascpite:方法名()"); 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.