I'm attempting to write a plugin for phonegap that will access native Java that I have written. The only problem is that when I call cordova.exec, the failure callback message is "Class not found". I'm assuming this means that it can't find the java file, but I don't know why.
Here is my code. Javascript:
var SerialHelper = {
getName: function(){
return "this is the name"
},
getSerial: function(success, failure) {
cordova.exec(
success, // success callback function
failure, // error callback function
'com.isabellaproducts.serialhelper.SerialHelper',
'getFableSerial',
[]
);
}
}
module.exports = SerialHelper;
Java:
package com.isabellaproducs.serialhelper;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import org.apache.cordova.*;
public class SerialHelper extends CordovaPlugin
{
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("getFableSerial".equals(action)) {
String serial = "15345344132354";
callbackContext.success(serial);
//callbackContext.sendPluginResult(new PluginResult(Status.OK, serial));
return true;
}
else{
callbackContext.error("method not found");
return false;
}
}
}
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
id="com.isabellaproducts.serialhelper"
version="1.0">
<name>SerialHelper</name>
<description>Serial Helper gets the Fable gives serial number access</description>
<license>MIT</license>
<keywords>serial, helper, fable</keywords>
<js-module src="www/serial_helper.js" name="SerialHelper">
<clobbers target="com.isabellaproducts.serialhelper" />
</js-module>
<!-- android -->
<platform name="android">
<source-file src="src/android/com/isabellaproducts/serialhelper/SerialHelper.java" target-dir="src/com/isabellaproducts/serialhelper" />
<config-file target="res/xml/config.xml" parent="/*">
<feature name="SerialHelper">
<param name="android-package" value="com.isabellaproducts.serialhelper.SerialHelper"/>
</feature>
</config-file>
</platform>
</plugin>
In logcat, I get this error:
D/PluginManager(12316): exec() call to unknown plugin: SerialHelper
Any help would be much appreciated.
Thanks.
Wow....so, I was putting the plugin in a custom package. That was messing everything up!
The simple change from: com.isabellaproducts.serialhelper to com.phonegap.plugins.serialhlper
It now looks like this. Javascript:
var SerialHelper = {
getName: function(){
return "this is the name"
},
getSerial: function(success, failure) {
cordova.exec(
success, // success callback function
failure, // error callback function
'SerialHelper',
'getFableSerial',
[]
);
}
}
module.exports = SerialHelper;
Java:
package com.phonegap.plugins.serialhelper;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import org.apache.cordova.*;
public class SerialHelper extends CordovaPlugin
{
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("getFableSerial".equals(action)) {
String serial = "15345344132354";
callbackContext.success(serial);
//callbackContext.sendPluginResult(new PluginResult(Status.OK, serial));
return true;
}
else{
callbackContext.error("method not found");
return false;
}
}
}
plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
id="com.phonegap.plugins.serialhelper"
version="1.0">
<name>SerialHelper</name>
<description>Serial Helper gets the Fable gives serial number access</description>
<license>MIT</license>
<keywords>serial, helper, fable</keywords>
<js-module src="www/serial_helper.js" name="SerialHelper">
<clobbers target="com.phonegap.plugins.serialhelper" />
</js-module>
<!-- android -->
<platform name="android">
<source-file src="src/android/com/phonegap/plugins/serialhelper/SerialHelper.java" target-dir="src/com/phonegap/plugins/serialhelper" />
<config-file target="res/xml/config.xml" parent="/*">
<feature name="SerialHelper">
<param name="android-package" value="com.phonegap.plugins.serialhelper.SerialHelper"/>
</feature>
</config-file>
</platform>
</plugin>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.