android phonegap
大家讲道理
大家讲道理 2017-04-17 16:33:31
[Android讨论组]

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(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 参数。

最后效果图如下:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号