phonegap 基础原理

phonegap是web app 下调用移动OS原生API的库。在整个压缩包结构中主要分三块:

1、cordova.js,前端的js库;功能是提供js的API接口,最终调用的是promp方法,如下:

/**
 * Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
 * This is used only on the 2.3 simulator, where addJavascriptInterface() is broken.
 */

module.exports = {
    exec: function(service, action, callbackId, argsJson) {
        return prompt(argsJson, ‘gap:‘+JSON.stringify([service, action, callbackId]));
    },
    setNativeToJsBridgeMode: function(value) {
        prompt(value, ‘gap_bridge_mode:‘);
    },
    retrieveJsMessages: function() {
        return prompt(‘‘, ‘gap_poll:‘);
    }
};

2、cordova jar包

以android下为例,基本原理是通过重写webview下的onJsConfirm接口,如下:

public class CordovaChromeClient extends WebChromeClient
  public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)
  {
    boolean reqOk = false;
    if ((url.startsWith("file://")) || (Config.isUrlWhiteListed(url))) {
      reqOk = true;
    }

    if ((reqOk) && (defaultValue != null) && (defaultValue.length() > 3) && (defaultValue.substring(0, 4).equals("gap:")))
    {
      try {
        JSONArray array = new JSONArray(defaultValue.substring(4));
        String service = array.getString(0);
        String action = array.getString(1);
        String callbackId = array.getString(2);
        String r = this.appView.exposedJsApi.exec(service, action, callbackId, message);
        result.confirm(r == null ? "" : r);
      } catch (JSONException e) {
        e.printStackTrace();
        return false;
      }

    }
通过exposedJsApi对象,以类似MML的设计模式,将前端不同的JS脚本转换成action,通过对应plugin处理。3、config.xml 配置文件用以配置需要用的插件,比如摄像头、文件、事件等等。
时间: 2024-10-08 16:44:28

phonegap 基础原理的相关文章

Linux高可用集群方案之heartbeat基础原理及逻辑架构

 这篇文章我们主要学习heartbeat高可用集群的基础原理及逻辑架构,以及heartbeat的简单配置  ll  本文导航    · heartbeat之基本原理   · heartbeat之集群组件   · heartbeat之心跳连接   · heartbeat之脑裂(资源争用.资源隔离) · heartbeat之配置文件   · heartbeat至高可用集群配置  ll  要求  掌握heartbeat高可用集群的相关组件及简单配置   heartbeat之基本原理  heartbea

49 Linux操作系统原理、虚拟化技术基础原理

04 虚拟化技术基础原理 一.配置虚拟化网络 1.编辑配置文件 #关闭NetworkManager [[email protected] ~]# service NetworkManager stop [[email protected] ~]# chkconfig NetworkManager off    [[email protected] ~]# chkconfig --list NetworkManager NetworkManager  0:关闭  1:关闭  2:关闭  3:关闭

web socket and web worker 基础原理及使用

个人认为HTML5最吸引人的两大功能, web socket 和 worker为构建高效能的web应用提供了新的参考方案. 大体来说,web socket提供更高效的传输协议,web worker提供多线程提高web应用计算效率.最近项目有用到,对应两个问题的解决,目前运行效果来看还是很不错. 这里主要是总结这两个技术的基础原理,和常用API.备忘,也列举关键掌握点,入门和基础使用足以. Web Socket websocket是一种协议,本质上和http,tcp一样.协议是用来说明数据是如何传

核花宝典之脑功能成像(fMRI)基础原理

首发于Jinaffe长璟鹿的医学影像小漫画 关注专栏 写文章 核花宝典之脑功能成像(fMRI)基础原理 Jinaffe长璟鹿 4 个月前 我们只看图,不说话... ... 医学科普漫画 4 收藏 分享 举报 文章被以下专栏收录 Jinaffe长璟鹿的医学影像小漫画 不会画小漫画的女博士不是好的长颈鹿呀 进入专栏 2 条评论 写下你的评论 取消评论 筱贰获 长璟鹿姐姐好有才呀~~~ 0 赞 3 个月前 回复赞 举报 王善诚 题主自己画的吗?挺有才 0 赞 16 天前 回复赞 举报 推荐阅读 核花宝

X-ray/CT成像基础原理

首发于Jinaffe长璟鹿的医学影像小漫画 关注专栏 写文章 X-ray/CT成像基础原理 Jinaffe长璟鹿 5 个月前 我们只看图,不说话... ... 医学影像科普漫画 16 收藏 分享 举报 文章被以下专栏收录 Jinaffe长璟鹿的医学影像小漫画 不会画小漫画的女博士不是好的长颈鹿呀 进入专栏 15 条评论 写下你的评论 取消评论 叶茂青 这字看着真心累 0 赞 5 个月前 回复赞 举报 长胜兄 MRI呢 0 赞 5 个月前 回复赞 举报 查看对话 Jinaffe长璟鹿(作者)回复叶

第三十三天 LVS基础原理、调度算法、NAT和DR的实现 、LXC虚拟化

大规模站点构建框架 LVS的基础原理 LVS调度方法及NAT模型的实现 LVS  dr模型及lxc虚拟化 一.大规模站点架构框架 http: stateless keep-alive cookie: session 系统的:可扩展性.高可用性:99%, 99.9%, 99.999% .性能: 可扩展性: 容量:在一定时间内能完成的工作量 scale up: 向上扩展 scale out: 向外扩展 Cluster: 集群 构建高可扩展性系统的重要原则:在系统内部尽量避免串行化和交互 调度器:di

28_1_iptables系列之基础原理

iptables/netfilter:工作在linux内核中的网络防火墙,是一组工具.    netfilter:正真起作用的是netfilter,它是一个框架:    iptanles:是生成防火墙规则,并且将其附加在netfilter上真正实现数据报文过滤.nat.mangle等规则生成的工具. 1.一些网络知识:   ip报文首部,Tcp报文首部   事实上,网络防火墙的主要功能是根据报文首部实现的.(1)ip报文首部:   0:版本号(4),IP首部大小[结果*4](4),服务类型(8)

Web Service 之 http基础原理

Web Service 之 http基础原理 ========================================================================= 概述: 网络通信基础 ★进程间通信:IPC Socket(套接字):ip:port ★Client <--> Server Server: listen(监听状态,表示服务器正在等待新的传输链接进入) Client: ★客户端与服务器间通信实际上是客户端套接字和服务器端套接字间通信 IP:PORT(Cl

第五十二课 linux操作系统原理、虚拟机基础原理

linux操作系统原理 linux操作系统原理 虚拟机技术基础原理 虚拟机技术基础原理