phonegap 怎么和android客户端进行数据交互
楼主你好:
我们通常说的 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 参数。
最后效果图如下: