`
shuai1234
  • 浏览: 995851 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

android与phonegap的相互交互

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

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

 

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

[java] view plaincopy
 
  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 plaincopy
 
  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 plaincopy
 
  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 plaincopy
 
  1.    
[java] view plaincopy
 
  1. 4,最后在你需要触发的地方加上:  
[java] view plaincopy
 
  1. window.plugins.testAndroid01API.test(null,function(r){},function(e){});  
[java] view plaincopy
 
  1. 这样就可以调用android的Activiy类了,  
[java] view plaincopy
 
  1. 同理.如果你的在android端把数据传给phonegap端,流程大概与上面的步骤想似:  
[java] view plaincopy
 
  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 plaincopy
 
  1. 4,是在你需要返回结果的地方添加:  
[java] view plaincopy
 
  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 plaincopy
 
  1. 这样就可以把数据传递了,当然是你继承了plugin的类中处理方式也是有不同的,例如:  
[java] view plaincopy
 
  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>完!  
分享到:
评论

相关推荐

    NFC+Arduino、Android与PhoneGap近场通信

    ■ 用PhoneGap和它的NFC插件写Android上的NFC应用程序用例 ■ 深入了解NDEF结构:测试已有的写标签程序,然后写自己的标签程序 ■ 用PhoneGap事件监听器来监听和过滤NDEF消息 ■ 写一个完整的Android应用程序来控制...

    android与phonegap混合开发之相互跳转

    本教程将深入探讨如何在Android应用中集成PhoneGap,并实现两者之间的相互跳转,同时传递参数。 首先,我们需要了解PhoneGap的基本概念。PhoneGap提供了一个桥梁,使得JavaScript能够调用设备的原生功能,如摄像头...

    自定义plugin插件实现phonegap与Android交互

    在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...

    NFCArduino、Android与PhoneGap近场通信

    资源名称:NFC Arduino、Android与PhoneGap近场通信内容简介:《NFC:Arduino、Android与PhoneGap近场通信》将带你走入近场通信(NFC)的世界,这是一种快速发展的技术,它能够让设备近距离交换数据或使用无线电信号...

    android之PhoneGap入门实例

    PhoneGap的核心理念是通过Web技术实现与移动设备硬件的交互,让开发者能够利用熟悉的Web开发技能开发出能在iOS、Android、Windows Phone等多平台运行的应用。 在"android之PhoneGap入门实例"中,我们首先需要了解...

    android+phonegap+jquery mobile

    "android"指代平台,"phonegap"表示开发工具,"jqm"是jQuery Mobile的缩写,代表了用户界面设计和交互的工具。 **知识点详解:** 1. **Android**:Android是一个开源的移动操作系统,支持各种硬件设备,包括手机、...

    NFC Arduino Android与PhoneGap近场通信

    NFC Arduino Android与PhoneGap近场通信

    android+Phonegap开发环境搭建

    PhoneGap基于Apache Cordova,将Web技术与Android等操作系统紧密集成,使得开发者可以利用熟悉的Web开发技能来创建功能丰富的手机应用。本篇文章将详细介绍如何在Android环境下搭建PhoneGap的开发环境。 首先,我们...

    Android和PhoneGap打包本地网站和在线网站

    3. 处理网页与原生应用的交互,例如通过JavaScript Interface实现通信。 在Android和PhoneGap中访问相机功能,可以使用PhoneGap的Camera API。这个API允许应用启动设备的摄像头,拍摄照片或者选择已有的图片。使用...

    phonegap开发中JS与Android之间的交互

    在"PhoneGap开发中JS与Android之间的交互"这一主题中,我们将深入探讨如何通过JavaScript调用Android的API,以及如何处理Android与JavaScript的通信。 1. **PhoneGap架构** PhoneGap基于Cordova,它的架构分为三个...

    android_phonegap-0.9.5.1.jar

    在这个版本中,开发者可以利用JavaScript与Android设备的硬件特性进行交互,包括访问摄像头、地理位置、联系人信息等,从而实现更丰富的功能。这使得Web开发者能够利用他们熟悉的Web技术构建具有原生功能的应用,极...

    android上phonegap例子

    在Android平台上,PhoneGap提供了一个桥梁,将Web技术与Android SDK相结合,使得开发者可以利用熟悉的Web编程技能来开发Android应用,而无需深入学习Java或Android原生开发知识。 在这个"android上phonegap例子"中...

    websocket-android-phonegap-maste

    在Android应用中,开发者可以使用`javax.websocket`库来创建WebSocket客户端,与服务器建立连接并进行数据交互。`AndroidWebSocketClient`类是常用来封装WebSocket客户端操作的类,包含了连接、发送、接收和断开连接...

    phonegap之android示例

    通过这个项目,我们可以深入理解PhoneGap如何与Android原生环境相结合,以及如何利用JavaScript进行移动应用开发。 首先,PhoneGap的核心思想是将Web应用打包成原生应用。它通过一个WebView组件(在Android中是...

    oPath的Android 2.1 PhoneGap 2.0.0 移植版本

    oPath的Android 2.1 PhoneGap 2.0.0 移植版本。 移植过程中遇到错误: TypeError: Result of expression "navigator.camera" is not an object 答案: 有可能是 PhoneGap 没有被正确装载或者完全装载你就调用了。 ...

    websocket-android-phonegap

    在Android平台上,结合PhoneGap(现称为Cordova),我们可以构建原生功能丰富的混合移动应用,同时利用WebSocket实现与服务器的实时通信。本文将详细讲解如何在Android PhoneGap项目中集成WebSocket。 首先,我们...

    Android for PhoneGap 程式配置

    ### Android for PhoneGap 程序配置详解 #### 一、概述 随着移动互联网的快速发展,跨平台开发框架越来越受到开发者的青睐。其中,PhoneGap作为一款基于HTML、CSS和JavaScript技术栈的开源移动开发框架,能够让...

    phoneGap与android的activity交互例子,互相调用函数,js,java的交互

    一个Android原生activity与phonegap交互的例子, java调用js,js调用java 工程中是一个嵌套了phonegap的activity ,外层是android的activity,内层framelayout中是phonegap,完成了交互的简单例子

    phoneGap与android的activity交互例子,互相调用函数,js,java的交互.zip

    综上所述,PhoneGap与Android的Activity交互是一个涉及多层面的技术课题,包括WebView的使用、JavaScript与Java的通信、Android的生命周期管理以及自定义功能的扩展等。理解和掌握这些知识点对于开发出高效、稳定的...

    Android代码-phonegap-android

    PhoneGap Android is an Android application library that allows for PhoneGap-based projects to be built for the Android Platform. PhoneGap-based applications are, at the core, an application written in...

Global site tag (gtag.js) - Google Analytics