phonegap添加插件(android)

  qt也开始支持android与ios,遗憾的是qwebkit不能在android于ios上使用,希望5.3能加入。为了能够实现跨移动平台,选择phonegap进行开发。phonegap的安装大家可以参照官网www.phonegap.com。目前最新版本为2.91,本人用的是2.90版。在这里简单简述下如何在phonegap下添加插件,使用js调用本地函数。

  详细步骤可以参考官网:

http://docs.phonegap.com/zh/3.4.0/guide_platforms_android_plugin.md.html#Android%20%E5%A4%96%E6%8E%9B%E7%A8%8B%E5%BC%8F

  如果你像我一样使用2.90的话官网的文档(3.4.0)是无法使用的,问题出在JS调用说明部分(其余部分可以参考官网),官方的文档例子为

cordova.exec(function(winParam) {},
                 function(error) {},
                 "service",
                 "action",
                 ["firstArgument", "secondArgument", 42, false]);

  如果按照官方的做法将会报错TypeError: Result of expression ‘cordova.exec‘ [undefined] is not a function 找不到这个方法,在网上搜了一圈都是调用cordova.exec()。没办法,只能是去看下源码,既然是cordova,就找cordova.js这个文件,果然在这个文件里cordova这个类没有exec方法。不过在程序里有一句

var exec = require(‘cordova/exec‘);

  而cordova类里又有require。所以硬着头皮在要调用的js文件下使用下面的方式调用。结果这样代码是可以正常运行的,不过正确的方式是不是这样,这就不确定了,官方在文档这方面的更新还是不够快啊。

var exec = cordova.require("cordova/exec");
exec(callbackok,callbackerr,"AndroidAPIforJS", "test1", ["test"]);

  接下来就说下我具体的实现步骤。

  第一步实现android插件程序

public class AndroidAPIforJS extends CordovaPlugin
{  
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException 
    {
        if (action.equals("test"))
        {
            Log.e("plugintest","ok");
            callbackContext.success();
            return true;
        }
        else
        {
            Log.e("plugintest","error");
            callbackContext.error(0);
            return false;
        }
    }
}

  第二步在config.xml中添加

<feature name="AndroidAPIforJS">
   <param name="android-package" value="com.myexample.phonegap.AndroidAPIforJS"/>
 </feature>

  第三部编写js代码

function callbackok()
{
  alert(
"ok!"); } function callbackerr() { alert("error!"); } var exec = cordova.require("cordova/exec"); exec(callbackok,callbackerr,"AndroidAPIforJS", "test", ["test"]);

   这里简单说明下exec的参数

  callbackok:当调用插件成功时,且java程序执行callbackContext.success();被触发。

  callbackerr:当调用插件失败时,且java程序执行callbackContext.error(0);被触发。

  "AndroidAPIforJS":为插件类名。

  "test":用于区分插件类调用方法。

  ["test"]:用于传参。

phonegap添加插件(android),,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。