Cordova自己的插件给出错误:对象没有方法'申请'在cordova.js上

时间:2017-04-21 10:18:23

标签: javascript jquery cordova cordova-plugins

我已经制作了自己的cordova插件,但我无法使用它。 这是java文件。 myTest.java

package com.testplugin.test;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
import org.json.JSONException;

public class myTest extends CordovaPlugin { 
@Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("giveHello")) {
            String results = "Hello world";
            callbackContext.success(results);
            return true;
        }
        return false;
    }
}

我的插件javascript文件mytest.js

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

module.exports = {
     showhello: function(successCallback, errorCallback) {
           exec(successCallback, errorCallback, "myTest", "giveHello", [null]);
     }
}

这是plugin.xml

<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-mytest" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>Test plugin</name>
<js-module name="myTest" src="www/mytest.js">
    <clobbers target="myTest" />
</js-module>
<platform name="android">
    <config-file parent="/*" target="res/xml/config.xml">
        <feature name="myTest">
            <param name="android-package" value="com.testplugin.test.myTest" />
        </feature>
    </config-file>

    <source-file src="src/android/test/myTest.java" target-dir="src/com/testplugin/test" />
</platform>

但是当我在www文件夹中调用它时,在myapp.js

myTest.showhello('myTest', success, error);

我收到了这个错误:

  

成功时出错callbackId:myTest1490933768:TypeError:对象myTest没有方法&#39; apply&#39;&#34;,source:file:///android_asset/www/cordova.js(312)<< >

有人会告诉我我犯了什么错误吗?错误是什么意思?

2 个答案:

答案 0 :(得分:0)

编写js和java文件是不够的。您需要创建Plugin.xml并使用创建的java插件文件绑定js方法。例如。

<js-module src="www/android/proximity-notification.js" name="ProximityNotification">
        <clobbers target="ProximityNotification" />
    </js-module>

有关完整参考,请参阅https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html

答案 1 :(得分:0)

似乎我发现了自己的错。 它在mytest.js中

而不是showhello: function(successCallback, errorCallback),我必须做showhello: function(message, successCallback, errorCallback)

之类的事情