Android中 Js 扩展及交互


Android中的JS扩展有2中方式:

1.利用webkit提供的js扩展接口在 java层扩展,直接由app实现
优点:容易
缺点:跟app耦合,其他app不能使用该js扩展
2.利用npapi在cpp层扩展
优点:所有app都能共享该扩展
缺点:相对有难度

引擎主要分为3大模块
1.webkit 平台相关代码,是对以下2模块的平台port封装
2.webcore 实现layout排版;渲染;当检测html中含有js脚本时交由jscore处理
3.javascriptcore/v8 解析js脚本,并执行

jscore跟webcore的交互 主要跟binding有关系。数据类型有map映射,一般的js扩展不涉及jscore的改动




通过Android webview实现与javascript函数相互调用



  • public
    class WebViewDemo extends Activity {
        private WebView mWebView;
        private Handler mHandler = new Handler();
        public
    void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.webviewdemo);
            mWebView = (WebView) findViewById(R.id.webview);
            WebSettings webSettings = mWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);  //webview支持javascript
            mWebView.addJavascriptInterface(new Object() {  //添加javascript可调用的接口
                public
    void clickOnAndroid() {
                    mHandler.post(new Runnable() {
                        public void run() {
                            mWebView.loadUrl("javascript:wave()");
                        }
                    });
                }
            }, "demo");
            mWebView.loadUrl("file:///android_asset/demo.html");  //调用的网页
        }
    }
    demo.html:
    
    
    <html>
            <script language="javascript">
                    function wave() { //准备在activity里调用的函数
                        document.getElementById("droid").src="android_waving.png";
                    }
            </script>
            <body>
                <a onClick="window.demo.clickOnAndroid()"> //调用activity的clickOnAndroid()函数
                                    <imgid="droid"src="android_normal.png"/><br>Click me!
                </a>
            </body>
    </html>


     
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值