PhoneGap,Cordova框架下Html5中JS调用Android原码

移动开发 Android
PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来开发本地移动应用程序。

按照我一惯得套路,我会先说一点废话。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)

  1. var MyPlugin = { 
  2.              UpDate: function (success, fail, url) { 
  3.                
  4. return  PhoneGap.exec(function (args) { 
  5.              success(args); 
  6.            }, function (args) { 
  7.             fail(args); 
  8.           }, ‘UpDate’, ‘Update’, [url]); 
  9.        },       
  10.      PassLock: function (success, fail, url){ 
  11.         return  PhoneGap.exec(function (args) { 
  12.             success(args); 
  13.         }, function (args) { 
  14.             fail(args); 
  15.         }, ‘PassLock’, ‘PassLock’, [url]); 
  16.        
  17.      } 
  18. }; 

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

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

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

  1. ublic class UpdatePlugin extends Plugin { 
  2.       @Override 
  3.         
  4. public PluginResult execute(String arg0, JSONArray arg1, String arg2) { 
  5.         /* 
  6.        * 跳转到UpdateActivity 
  7.        */ 
  8.       
  9.       Intent intent = new Intent(ctx.getContext(),UpdateActivity.class); 
  10.           ctx.startActivity(intent);   
  11.           String result = “跳转至UpdateActivity”;  
  12.           PluginResult pluginResult = new PluginResult(Status.OK, result); 
  13.             
  14. return pluginResult; 
  15.          
  16.     } 

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

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

  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://my.oschina.net/u/1157906/blog/293177

责任编辑:chenqingxiang 来源: oschina
相关推荐

2012-03-07 15:24:41

2012-04-14 20:44:14

PhoneGap

2011-08-31 13:27:52

AndroidPhoneGap

2011-11-28 13:25:41

PhoneGapHTML5

2015-10-23 13:44:14

巴巴猎

2011-09-02 13:30:43

Android SDKPhoneGap

2011-11-28 09:58:30

PhoneGapAppMobiHTML5

2011-10-08 10:15:40

AdobePhoneGapNitobi

2015-07-06 09:57:04

HTML5CSS框架BootFlat

2015-05-13 10:04:36

ionicHtml5

2019-12-26 15:12:14

Html5框架Web

2015-07-31 09:56:58

2015Html5框架

2015-07-27 09:48:24

最棒 HTML5 框架

2013-01-24 10:26:04

HTML5HTML 5HTML5的未来

2014-11-26 10:14:10

AndroidiOSHTML5

2013-08-15 09:14:55

2013-10-21 15:24:49

html5游戏

2011-05-13 17:36:05

HTML

2011-09-02 13:51:00

PhoneGap框架HTML5

2011-05-13 17:41:40

点赞
收藏

51CTO技术栈公众号