Cordova插件开发

来源:互联网 发布:interbase数据库说明书 编辑:程序博客网 时间:2024/05/17 22:22

今天主要了解了这么几个点,一个是有关MQTT的,当然,现在还是不知道那个mosquitto那边是怎样把数据返回的,只是了解了一下安卓这边的代码是什么意思,然后发现,如果想在cordova里面调用mqtt的类和方法的话,应该有两个方法,一是重写扩展WebView,二是插件开发呗,我怕改写WebView里面的方法,会对cordova有影响,也正好想学习一下cordova的插件开发,然后就一直在看教程,实验插件的用法,发现调试太恶心了,不过后来还是发现了一些提高调试速度的方法,那就是插件先不统一写在plugin里面,直接在包里面写,然后在config.xml里面用feature注册,然后,直接在www里用js调用,就可以了,编辑器此处本人使用的为eclipse安装有andoridweb开发环境,这样把项目导入进来之后,既可以改android部分的代码还可以改前端的代码,代码如下:

过程如下:

  1. 将工程导入到eclipse
  2. 有木有发现assets里的一个文件_where-is-www.txt,就是打开项止属性,改filter,删除之后,在assets里就有了www目录,网页代码就可以直接在这个里面进行修改了
  3. 配置assets目录下的cordova_plugins.js
  4. 然后在plugin下写javascript接口
  5. 在res/xml里配置config文件
  6. 在src里写java文件就可以了代码如下:

config.xml

<feature name="Push">    <param name="android-package" value="com.xyzh.plugin.Push" /></feature>

Push.java

public class Push extends CordovaPlugin{@Overridepublic boolean execute(String action, JSONArray args,CallbackContext callbackContext) throws JSONException {if(action.equals("push")) {callbackContext.success(args.getString(0) != "" ? args.getString(0) : "nothing to push");} else {callbackContext.error("call the non-method.");}return true;}}

Controller.js

angular.element(document).ready(function() {    window.push = function(str, callback) {        cordova.exec(callback, function(err) {            callback(err);        }, "Push", "push", [str]);    };    window.push("Push-word", function(echoValue) {        alert(echoValue);        alert(echoValue == "echome");    });});

MQTTcordova中直接调用service方法会报错,根据一步步追踪调试发现问题为:

Network on main thread 妹的,是老问题,主线程中调用了网络


0 0
原创粉丝点击