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

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

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

        super.init();        super.setBooleanProperty("loadInWebView", true);         super.setIntegerProperty("loadUrlTimeoutValue", 60000); //在模拟器测试上使用.不然会出错        //加splashScreen        super.setIntegerProperty("splashscreen", R.drawable.welcome);        this.appView.setBackgroundColor(0);        this.appView.setBackgroundResource(R.drawable.welcome);        super.loadUrl(file:///android_asset/PagoClient/index.html);


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

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

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

public class pluginClass extends Plugin{    public static final String ACTION = "codetest";    public static final String ACTION_INTENT_TEST = "com.terry.broadcast.test";    @Override    public PluginResult execute(String action, JSONArray data, String callbackId) {        // TODO Auto-generated method stub        if(ACTION.equals(action)){            Intent intent = new Intent(ctx.getContext(), CaptureActivity.class);//你想去的activity(exp:Temp)   ctx.startActivity(intent);        }        return null;    }    }

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

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

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

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

//tovar testAndroid01API=function(){};    testAndroid01API.prototype.test = function(params, success, fail){    return PhoneGap.exec(                function(args){                    success(args);                },                 function(args){                    fail(args);                },                 'plugintest', //java类                'codetest',    //action                [params]    //params    );};PhoneGap.addConstructor(function() {PhoneGap.addPlugin('testAndroid01API', new testAndroid01API());});   if(!window.plugins) {    window.plugins = {};}if (!window.plugins.testAndroid01API) {    window.plugins.testAndroid01API = new testAndroid01API();}
  
4,最后在你需要触发的地方加上:
       window.plugins.testAndroid01API.test(null,function(r){},function(e){});
这样就可以调用android的Activiy类了,
同理.如果你的在android端把数据传给phonegap端,流程大概与上面的步骤想似:
1,2步一样,第3步是:
PhoneGap.addConstructor(function() {PhoneGap.addPlugin('testAndroid02API', new testAndroid02API());});
//resultvar 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();}
4,是在你需要返回结果的地方添加:
     var success = function(data){ //当Java方法返回成功时,通过data.key 获得Java中传来的JSONObject数据  //alert("1111111 : " + data.testData1 + ' and 2222222 : ' + data.testData2);  Ext.getCmp('txt_').setValue(data.qrcodeData);  };  var error = function(e){  //Ext.getCmp('txt_').setValue(e);  };  window.plugins.testAndroid02API.test(success, error, null);
这样就可以把数据传递了,当然是你继承了plugin的类中处理方式也是有不同的,例如:

public class resultClass extends Plugin{

public static final String ACTION = "resultcode";

PluginResult result = null; JSONObject jsonObj = new JSONObject();//可以返回给JS的JSON数据 private SharedPreferences mPref; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { mPref = PreferenceManager.getDefaultSharedPreferences(ctx.getContext());if(ACTION.equals(action)){String resultCode = mPref.getString("qr_code_result", null);while (resultCode==null || resultCode.length()==0) {//循环获取qr_code_result,直到有值resultCode = mPref.getString("qr_code_result", null);}resultCode = mPref.getString("qr_code_result", null);if(resultCode.length() != 0 ){try {jsonObj.put("qrcodeData", resultCode);mPref.edit().remove("qr_code_result").commit();} catch (JSONException e) {e.printStackTrace();} System.out.println("有值!");result = new PluginResult(PluginResult.Status.OK, jsonObj); //返回成功时,将Java代码处理过的JSON数据返回给JS }else{System.out.println("无值!");result = null;} } return result; } }

完!

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  3. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  4. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  5. Android自带的几种Activirty
  6. Android(安卓)学习笔记 databinding简单使用:使用databinding在li
  7. Android使用Handler实现倒计时功能
  8. android绘制几何图形的实例代码
  9. android Dialog 各种Dialog 三个选项的、进度条的、单选的、多选

随机推荐

  1. MySql使用mysqldump 导入与导出方法总结
  2. Mysql join联表及id自增实例解析
  3. MySQL之mysqldump的使用详解
  4. MySQL单表查询实例详解
  5. MySQL性能优化技巧分享
  6. Mysql数据库定时备份脚本分享
  7. MySQL如何实现事务的ACID
  8. MySql三种避免重复插入数据的方法
  9. 深刻解析 Android(安卓)的 AIDL
  10. Android中布局的巧妙设计【android进化二