首页 > android phonegap

android phonegap

phonegap 怎么和android客户端进行数据交互


楼主你好:

我们通常说的 phonegap, 在Android中其实就是cordova-lib.jar
在这个 jar 包中,cordova 实现了一个 CordovaPlugin 的东西,来让我们的 js 和 android 客户端进行交互。

也就说,你的问题描述是不准确的: 大概应该是如何使用phonegap,让程序和android客户端进行数据交互

接下来回答问题:

例子:
plugin 一共由两部分组成,首先是Android源程序。

import org.apache.cordova.CallbackContext;
···

public class ToastPlugin extends CordovaPlugin {
    private static final String TOAST = "show";

    @Override
    public boolean execute(String action, JSONArray args,
            CallbackContext callbackContext) throws JSONException {
        // js 通过 cordova 传输的数据,将被接收到 args 中
        if (action.equals(TOAST)) {
            toast(args, callbackContext);
        }
        ···
        return true;
    }

    /**
     *  根据传入的参数显示内容
     *  
     *  @param args 显示的内容
     *  @param callbackContext 回调函数
     *  
     * */
    private void toast(JSONArray args, CallbackContext callbackContext) throws JSONException {
        Toast toast = Toast.makeText(this.cordova.getActivity(), args.getString(0), Toast.LENGTH_LONG).show();
    }
}

以上就是大致的 android 源程序,重点是继承 CordovaPlugin 并实现它的 execute方法即可在这里处理来自 js 端的数据。

接着就是将插件从Android客户端暴露出去(ps: 这里通过CordovaWebView实现的,不继续说下去了)
在config.xml中配置即可暴露出去

// 注意,这里的name就是在js中,可以被访问到的名称。
<feature name="ToastPlugin">
    <param name="android-package" value="com.xxx.plugin.ToastPlugin" />
</feature>

最后,js中调用的方法如下:

// 注意,在这之前一定要引入 cordova.js 哦
cordova.exec(success, failure, 'ToastPlugin', 'show', ['我是测试信息哦!']);
// 这里的 success, failure 分别是成功回调函数和失败回调函数
// ToastPlugin 对应feature 的 name 属性。
// show 参数,对应 android 源程序的 action 参数。
// ['我是测试信息哦!'] 是对应 android 源程序的 args 参数。

最后效果图如下:

【热门文章】
【热门文章】