文档章节

PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

J
 Java编程思想
发布于 2014/07/21 10:03
字数 700
阅读 8715
收藏 1

按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来开发本地移动应用程序。因此,目前开发商可以只编写一次应用程序,然后在6个主要的移动平台和应用程序商店(app store)里进行发布,这些移动平台和应用程序商店包括:iOS、Android、BlackBerry、webOS、bada以及Symbian。Apache Cordova是PhoneGap贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎。大概意思也就是说:Cordova是由PhoneGap发展而来的,现在的Cordova就是当年的PhoneGap。所以下文中我来回的切换叫法,其实都是一个东西而已。

          下面言归正传,如何在PhoneGap或者Cordova框架下实现JS调用Android原生代码?(这里就不再啰嗦如何在Android程序中集成PhoneGap了)

     1.在你的html5中config.js定义你的Plugin的名称和方法。名为MyPlugin,有两个插件:一个为自动更新(Update),一个为密码锁定(PassLock)

     

 
var MyPlugin = {
             UpDate: function (success, fail, url) {
             
return  PhoneGap.exec(function (args) {
             success(args);
           }, function (args) {
            fail(args);
          }, ‘UpDate’, ‘Update’, [url]);
       },      
     PassLock: function (success, fail, url){
        return  PhoneGap.exec(function (args) {
            success(args);
        }, function (args) {
            fail(args);
        }, ‘PassLock’, ‘PassLock’, [url]);
     
     }
};



  2.在xml文件夹下的plugin里注册你的Plugin.

   

<plugin name=”UpDate” value=”com.gapsh.plugin.UpdatePlugin”/>   
<plugin name=”PassLock” value=”com.gapsh.plugin.PassLockPlugin”/>



  3.自定义你的Plugin类和处理方法.(这里只贴出了自动更新插件的代码,很简单,只是作了一个跳转)

 

 
public class UpdatePlugin extends Plugin {
      @Override
      
public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
        /*
       * 跳转到UpdateActivity
       */
    
      Intent intent = new Intent(ctx.getContext(),UpdateActivity.class);
          ctx.startActivity(intent);  
          String result = “跳转至UpdateActivity”; 
          PluginResult pluginResult = new PluginResult(Status.OK, result);
          
return pluginResult;
       
}
    }


  4.在你的JS中调用你的插件。

    

//自动更新
    upDate: function () {
        //调用android原生的方法检查并更新
       MyPlugin.UpDate(function(){},function(){},’这里是一个参数,我这里不涉及参数的使用,所以随便写’);
    },
    passLock: function(){
      //调用android原生的方法进行密码锁定有关操作
        MyPlugin.PassLock(function(){},function(){},’
这里是一个参数,我这里不涉及参数的使用,所随便写
‘);
    },



  5.测试,当你点击你的某个按钮或者链接执行你的update:function这个JS,然后在JS里调用了MyPlugin下的Update插件,这个插件在config.js里被定义,在plugin.xml中被注册,插件具体执行的地方时UpdatePlugin里的execute()方法。执行完这个方法后,你就已经调用了Android的原生代码咯,当然我这里是设置成了跳转到另外一个Activity.

   所需工具打包下载:http://pan.baidu.com/share/link?shareid=1636341858&uk=2937351404


本文转载自:http://www.kankanews.com/ICkengine/archives/40925.shtml

J
粉丝 28
博文 167
码字总数 10302
作品 0
广州
程序员
私信 提问
Cordova 和 Ionic 的区别

Cordova Apache Cordova是一个开源的移动开发框架。允许你用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发。 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑定去访问每个...

华山猛男
2018/11/07
176
0
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来...

请叫我高级研发工程师
2013/09/06
7.2K
3
PhoneGap的由来

2008年8月,PhoneGap在旧金山举办的iPhoneDevCamp上初次崭露头角。起名为PhoneGap是创始人的想法:“为跨越Web技术和iPhone之间的鸿沟牵线搭桥。”(Bridging the gap between the web and ...

生气的散人
2012/11/21
683
2
phonegap安装 环境搭建与配置详解( 完整版 提供下载地址)

phonegap 安装 环境搭建 完整版 刚刚接触 phonegap 因为配环境遇到各种各样问题.花了一下午时间才完成,所以写一个篇文章希望能给大家节约点时间. 本文主讲windows系统下的phonegap的环境搭建...

james_laughing
2014/12/17
38
0
phonegap安装 环境搭建与配置详解( 完整版 提供下载地址)

phonegap 安装 环境搭建 完整版 刚刚接触 phonegap 因为配环境遇到各种各样问题.花了一下午时间才完成,所以写一个篇文章希望能给大家节约点时间. 本文主讲windows系统下的phonegap的环境搭建...

james_laughing
2014/12/17
144
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
23分钟前
2
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
25分钟前
2
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
56分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部