Cordova插件开发

本文介绍了在Cordova中开发插件以调用MQTT服务的过程。作者探讨了两种方法,即重写WebView和插件开发,并选择了后者以避免潜在影响。在学习插件开发过程中,遇到了调试难题,但找到了提高调试效率的技巧,即在不整合到plugin目录下直接在包内编写,然后在config.xml中注册,并通过js调用。详细步骤包括导入Eclipse项目,修改assets目录,配置cordova_plugins.js,编写javascript接口,配置config.xml以及实现Java代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天主要了解了这么几个点,一个是有关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{
	@Override
	public 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 妹的,是老问题,主线程中调用了网络


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值