Recently I had a major run in with PhoneGap 1.7 and since I had a lot of java just begging to be called I ended up using plugins in PhoneGap.
Though there is a decent example on the PhoneGap website , I found it a little off base for a first plugin example , to explain just the basic functioning of plugins.The example I post here is a beginner level example which will help you understand the basic mechanism of plugins without any fancy stuff.
Steps :
1)Create an PhoneGap powered Android Project using phonegap docs
2)This is where we write our business logic . Create a java file MyPluginClass . This class will return some standard string to a html. You need to override the execute method of Plugin class and send back your result in a PluginResult object
successCallback : This method will be called after the plugin gets executed
failureCallback : This method will be called in case of error
We can also pass arguments to the Java class through the array
4)Register the plugin in plugins.xml with :
Though there is a decent example on the PhoneGap website , I found it a little off base for a first plugin example , to explain just the basic functioning of plugins.The example I post here is a beginner level example which will help you understand the basic mechanism of plugins without any fancy stuff.
Steps :
1)Create an PhoneGap powered Android Project using phonegap docs
2)This is where we write our business logic . Create a java file MyPluginClass . This class will return some standard string to a html. You need to override the execute method of Plugin class and send back your result in a PluginResult object
package org.firstplugin;
public class
MyPluginClass extends Plugin{
@Override
public PluginResult execute(String action, JSONArray data, String callbackID) {
try{
PluginResult rs=null;
/* Create the JSONObject which will be sent in PluginResult */
JSONObject jsonobj=new JSONObject();
/* Add whatever you want to send back to PhoneGap in the JSONObject */
jsonobj.put("myname","whats in a name");
/* Put your JSONObject in a PluginResult object */
rs=new PluginResult(Status.OK,jsonobj);
}
catch(JSONException e){ LOG.d("DEBUG",e.getmessage())}
/* Send your PluginResult object back to PhoneGap */
return rs;
}
}
3)Now we shall write the plugin javascript which will call MyPluginClass.This "myplugin.js" JS file will call PhoneGap.exec which in turn will call the execute method of MyPluginClass.var CallPlugin=function(){};
CallPlugin.prototype.get=function(successCallback,failureCallback){
return PhoneGap.exec(successCallback,failureCallback,' MyPluginClass ','show',[ ]);
};
PhoneGap.addConstructor(function() {
//Register the javascript plugin with PhoneGap
PhoneGap.addPlugin('callplugin', new CallPlugin());
});
In detail :successCallback : This method will be called after the plugin gets executed
failureCallback : This method will be called in case of error
We can also pass arguments to the Java class through the array
4)Register the plugin in plugins.xml with :
<plugin name=" MyPluginClass" value=" org.firstplugin.MyPluginClass"></plugin>5)Now write the html which will execute this plugin.Click the button " Click Me To Return Name" to run the plugin
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>
</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<link rel="stylesheet" href="my.css" />
<link rel="stylesheet" href="photoswipe.css" type="text/css"/>
<style>
/* App custom styles */
</style>
<script type="text/javascript" src="klass.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
</script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js">
</script>
<script src="cordova-1.7.0.js">
</script>
<script src="
myplugin.js">
</script>
</head>
<body>
<div data-role="page" id="home">
<div data-theme="a" data-role="header">
<h3>
Plugin Example
</h3>
</div>
<div data-role="content">
<div>
<a data-role="button" data-transition="fade" id="runplugin">
Click Me To Return Name
</a>
</div>
</div>
<div data-role="footer"></div>
</div>
<script type="text/javascript">
$("#
runplugin").click(function(e){
window.plugins.callcamplugin.get(
function(r){alert(JSON.stringify(r);},
function(e){console.log(e)}
);
});
</script>
</body>
</html>
Using this code you will be able to run a simple plugin using PhoneGap