android与phonegap的相互交互

开发环境:android SDK+android2.3或以上的真机

开发所需:cordova-2.1.0.js+sencha-touch-all-debug.js

 

首先把你的phonegap或sehcha项目放到assets文件夹下,然后在你的入口函数(onCreate)里添加如下:

[java]  view plain copy
  1. super.init();  
  2. super.setBooleanProperty("loadInWebView"true);   
  3. super.setIntegerProperty("loadUrlTimeoutValue"60000); //在模拟器测试上使用.不然会出错  
  4. //加splashScreen  
  5. super.setIntegerProperty("splashscreen", R.drawable.welcome);  
  6. this.appView.setBackgroundColor(0);  
  7. this.appView.setBackgroundResource(R.drawable.welcome);  
  8.   
  9. super.loadUrl(<a href="file:///android_asset/PagoClient/index.html">file:///android_asset/PagoClient/index.html</a>);  


这样就可以在你的机器上运行了.注意,我这里用的是2.1.0的cordova包,只支持android系统2.3/以上的真机!!!!!!!!!!!!!

 

如果要在phonegap或sencha端调用android端的代码就需要用插件的方式来做:

1,创建一个继承了Plugin的类

[java]  view plain copy
  1. public class pluginClass extends Plugin{  
  2.   
  3.     public static final String ACTION = "codetest";  
  4.     public static final String ACTION_INTENT_TEST = "com.terry.broadcast.test";  
  5.   
  6.     @Override  
  7.     public PluginResult execute(String action, JSONArray data, String callbackId) {  
  8.         // TODO Auto-generated method stub  
  9.         if(ACTION.equals(action)){  
  10.             Intent intent = new Intent(ctx.getContext(), CaptureActivity.class);//你想去的activity(exp:Temp)  
  11.        ctx.startActivity(intent);  
  12.         }  
  13.         return null;  
  14.     }  
  15.       
  16. }  

2,在项目的res/xml/config.xml文件加一个plugin

          <plugin name="plugintest" value="com.example.senchapago.pluginClass"/>

name是你自字的名字,value是继承了plugin类的所在类的路径

 

3,在phonegap项目里的cordova-2.1.0.js文件最后添加以下代码:

[java]  view plain copy
  1. //to  
  2. var testAndroid01API=function(){};      
  3.   
  4. testAndroid01API.prototype.test = function(params, success, fail){  
  5.     return PhoneGap.exec(  
  6.                 function(args){  
  7.                     success(args);  
  8.                 },   
  9.                 function(args){  
  10.                     fail(args);  
  11.                 },   
  12.                 'plugintest'//java类  
  13.                 'codetest',    //action  
  14.                 [params]    //params  
  15.     );  
  16. };  
  17. PhoneGap.addConstructor(function() {  
  18.     PhoneGap.addPlugin('testAndroid01API'new testAndroid01API());   
  19. });  
  20.      
  21.   
  22. if(!window.plugins) {  
  23.     window.plugins = {};  
  24. }  
  25. if (!window.plugins.testAndroid01API) {  
  26.     window.plugins.testAndroid01API = new testAndroid01API();  
  27. }  
[java]  view plain copy
  1.    
[java]  view plain copy
  1. 4,最后在你需要触发的地方加上:  
[java]  view plain copy
  1. window.plugins.testAndroid01API.test(null,function(r){},function(e){});  
[java]  view plain copy
  1. 这样就可以调用android的Activiy类了,  
[java]  view plain copy
  1. 同理.如果你的在android端把数据传给phonegap端,流程大概与上面的步骤想似:  
[java]  view plain copy
  1. 1,2步一样,第3步是:  
PhoneGap.addConstructor(function() {
  PhoneGap.addPlugin('testAndroid02API', new testAndroid02API());
 
});
//result
var testAndroid02API=function(){};       
testAndroid02API.prototype.test = function(success, error, qrcodeData){   
    return PhoneGap.exec( success, error,    
                'resulttest', //java类名,plugins.xml中注册的名字   
                'resultcode',    //action,Java方法中用来匹配的字段   
                [qrcodeData]    //params 传递的参数,Array形式   
    );   
};    
if(!window.plugins) {
    window.plugins = {};
}
 
if (!window.plugins.testAndroid02API) {
    window.plugins.testAndroid02API = new testAndroid02API();
}
[java]  view plain copy
  1. 4,是在你需要返回结果的地方添加:  
[java]  view plain copy
  1.      var success = function(data){ //当Java方法返回成功时,通过data.key 获得Java中传来的JSONObject数据     
  2.                   //alert("1111111 : " + data.testData1 + '   and 2222222 : ' + data.testData2);     
  3.                   Ext.getCmp('txt_').setValue(data.qrcodeData);   
  4.               };      
  5.                   
  6.      var error = function(e){      
  7.   
  8.                   //Ext.getCmp('txt_').setValue(e);      
  9.               };      
  10.     
  11.      window.plugins.testAndroid02API.test(success, error, null);  
[java]  view plain copy
  1. 这样就可以把数据传递了,当然是你继承了plugin的类中处理方式也是有不同的,例如:  
[java]  view plain copy
  1. <p>public class resultClass extends Plugin{</p><p>    public static final String ACTION = "resultcode";</p><p>    PluginResult result = null;       
  2.     JSONObject jsonObj = new JSONObject();//可以返回给JS的JSON数据   
  3.       
  4.     private SharedPreferences mPref;  
  5.       
  6.     @Override  
  7.     public PluginResult execute(String action, JSONArray data, String callbackId) {  
  8.         mPref = PreferenceManager.getDefaultSharedPreferences(ctx.getContext());  
  9.       if(ACTION.equals(action)){  
  10.   
  11.          String resultCode = mPref.getString("qr_code_result"null);  
  12.          while (resultCode==null || resultCode.length()==0) {//循环获取qr_code_result,直到有值  
  13.             resultCode = mPref.getString("qr_code_result"null);  
  14.      }  
  15.      resultCode = mPref.getString("qr_code_result"null);  
  16.      if(resultCode.length() != 0 ){  
  17.         try {  
  18.            jsonObj.put("qrcodeData", resultCode);  
  19.            mPref.edit().remove("qr_code_result").commit();  
  20.         } catch (JSONException e) {  
  21.            e.printStackTrace();  
  22.         }        
  23.         System.out.println("有值!");  
  24.         result = new PluginResult(PluginResult.Status.OK, jsonObj);     
  25.              //返回成功时,将Java代码处理过的JSON数据返回给JS   
  26.      }else{  
  27.         System.out.println("无值!");  
  28.         result = null;  
  29.      }  
  30.      
  31.         }  
  32.         return result;  
  33.     }  
  34.       
  35. }</p>完!  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值