I'm trying to send the photo image via Email and sms in phonegap, so written the plugin which acts as a bridge to java native code. the issue is when i click share button from html "Class not found" alert is poped up. even though the plugin name is correctly declared in config.xml file i'm getting this error, please help me..
This is the java code for it.
public class Share extends CordovaPlugin {
private FileOutputStream outStream;
private File file;
Bitmap bm;
public static final String ACTION_POSITION = "ShareImage";
Context context;
public Share(Context context) {
this.context = context;
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
if (ACTION_POSITION.equals(action)) {
try {
JSONObject arg_object = args.getJSONObject(0);
Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
sendIntent.setType("image/jpg");
String uri = "@drawable/"+arg_object.getString("image")+".jpg";
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
bm = BitmapFactory.decodeResource( context.getResources(), imageResource);
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
file = new File(extStorageDirectory+ "/Download/", "imageee.png");
try {
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
System.out.println(" praise god........");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, arg_object.getString("image"));
this.cordova.getActivity().startActivity(sendIntent);
} catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
callbackContext.error(e.getMessage());
return false;
}
}
return true;
}
}
Share.js plugin
var Share = function() {};
Share.prototype.show = function(success, fail, path) {
return cordova.exec( function(args) {
success(args);
}, function(args) {
fail(args);
}, 'Share','', 'ShareImage', [{"image": path}]);
};
if(!window.plugins) {
window.plugins = {};
}
if (!window.plugins.share) {
window.plugins.share = new Share();
}
Declaration of plugin in config.xml file
<plugins>
<plugin name="Share" value="com.picsswipe.Share"/>
</plugins>
logcat
11-11 16:02:04.898: W/System.err(15149): java.lang.InstantiationException: com.picsswipe.Share
11-11 16:02:04.898: W/System.err(15149): at java.lang.Class.newInstanceImpl(Native Method)
11-11 16:02:04.898: W/System.err(15149): at java.lang.Class.newInstance(Class.java:1409)
11-11 16:02:04.898: W/System.err(15149): at org.apache.cordova.api.PluginEntry.createPlugin(PluginEntry.java:80)
11-11 16:02:04.898: W/System.err(15149): at org.apache.cordova.api.PluginManager.getPlugin(PluginManager.java:249)
11-11 16:02:04.898: W/System.err(15149): at org.apache.cordova.api.PluginManager.exec(PluginManager.java:206)
11-11 16:02:04.898: W/System.err(15149): at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:51)
11-11 16:02:04.898: W/System.err(15149): at android.webkit.WebViewCore.nativeHandleTouchEvent(Native Method)
11-11 16:02:04.898: W/System.err(15149): at android.webkit.WebViewCore.nativeHandleTouchEvent(Native Method)
11-11 16:02:04.898: W/System.err(15149): at android.webkit.WebViewCore.access$6200(WebViewCore.java:54)
11-11 16:02:04.898: W/System.err(15149): at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1658)
11-11 16:02:04.898: W/System.err(15149): at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 16:02:04.898: W/System.err(15149): at android.os.Looper.loop(Looper.java:130)
11-11 16:02:04.898: W/System.err(15149): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:685)
11-11 16:02:04.898: W/System.err(15149): at java.lang.Thread.run(Thread.java:1019)
11-11 16:02:04.898: I/System.out(15149): Error adding plugin com.picsswipe.Share.
onclick function of html file
instance.addEventHandler(PhotoSwipe.EventTypes.onToolbarTap, function(e){
if (e.toolbarAction === PhotoSwipe.Toolbar.ToolbarAction.none){
share();
}
});
function share() {
window.plugins.share.show({path: "Image"},
function(e) {
alert(e) }, // Success function
function() {
alert("Praise god :( ")
},// Failure function
imagename
);
}