欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

phonegap添加插件(android)

来源: 开发者 投稿于  被查看 7157 次 评论:272

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"]:用于传参。

用户评论