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函数相互调用



  • publicclass WebViewDemo extends Activity {    private WebView mWebView;    private Handler mHandler = new Handler();    publicvoid 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可调用的接口            publicvoid 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>



更多相关文章

  1. Android(安卓)M App 永久隐藏导航栏的Solution
  2. 实现Unity和Android进行交互
  3. Android(安卓)SurfaceFlinger VSync流程分析
  4. SEAndroid安全机制对Android属性访问的保护分析
  5. 一步步教你如何创建React Native的原生Android模块
  6. Android(安卓)GPIO LED 驱动与HAL分析
  7. Rexsee API介绍:Android传感器系列之 - 磁场传感器Magnetic Field
  8. android ---Using java surface on the native side
  9. 『ANDROID』App工程结构搭建:几种常见Android代码架构分析

随机推荐

  1. mysql 存储过程判断重复的不插入数据
  2. Mysql单文件存储删除数据文件容量不会减
  3. mysql模糊查询like与REGEXP的使用详细介
  4. Mysql存储引擎详解
  5. mysql 正则表达式查询含有非数字和字符的
  6. MySQL的隐式类型转换整理总结
  7. Mysql利用group by分组排序
  8. Mysql百万级分页优化技巧
  9. MySql创建带解释的表及给表和字段加注释
  10. 详解Centos7 修改mysql指定用户的密码