• Android中webView与javascript交互


    主要是通过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:方法名()"); 

  • 相关阅读:
    2018-2019-2 20175202实验三《敏捷开发与XP实践》实验报告
    20175202 葛旭阳 MyCP
    20175202 《Java程序设计》第九周学习总结
    20175202 《Java程序设计》第八周学习总结
    2018-2019-2 20175202实验二《Java面向对象程序设计》实验报告
    20175202 结对编程练习—四则运算(第一周)
    20175203 2018-2019 实验三 《敏捷开发与XP实践》
    2018-2019-20175203 实验二 《Java面向对象程序设计》
    20175203 2018-2019-2 实验一《Java开发环境的熟悉》实验报告
    20175203 2018-2019-2《Java程序设计》第五周学习总结
  • 原文地址:https://www.cnblogs.com/liuzenglong/p/2609348.html
Copyright © 2020-2023  润新知