android phonegap

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

阅读 2.6k
1 个回答

楼主你好:

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

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

接下来回答问题:

  • 要想使程序和android客户端进行交互,需要使用plugin来进行操作。cordova plugin库

  • 我们拿一个 ToastPlugin 举例。

例子:
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 参数。

最后效果图如下:

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题