cordova - Android phone gap app restarts on image upload from camera -
this code
package com.sp.spandroid; import android.app.activity; import android.app.notification; import android.app.notificationmanager; import android.app.pendingintent; import android.content.context; import android.content.intent; import android.net.uri; import android.os.build; import android.os.bundle; import android.os.environment; import android.os.parcelable; import android.provider.mediastore; import android.util.log; import android.webkit.consolemessage; import android.webkit.valuecallback; import android.webkit.webchromeclient; import android.widget.toast; import org.apache.cordova.*; import java.io.file; public class cordovaapp extends cordovaactivity { private jsbridge jsbridge; // public static activity activity; public static valuecallback<uri> muploadmessage; private uri mcapturedimageuri = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); super.init(); // activity = this; // set <content src="index.html" /> in config.xml log.d("spandroid/cordovaapp/oncreate==>","oncreate !!"); jsbridge = new jsbridge(this, super.appview); super.appview.addjavascriptinterface(jsbridge, "jsbridge"); super.appview.getsettings().setjavascriptenabled(true); super.appview.getsettings().setloadwithoverviewmode(true); super.appview.getsettings().setallowfileaccess(true); if(build.version.sdk_int >= build.version_codes.jelly_bean_mr1){ super.appview.getsettings().setmediaplaybackrequiresusergesture(false); } loadurl(launchurl); cordovainterface cdv = (cordovainterface)getcontext(); super.appview.setwebchromeclient(new cordovachromeclient(cdv,super.appview) { // openfilechooser android 3.0+ public void openfilechooser(valuecallback<uri> uploadmsg, string accepttype) { cordovaapp.muploadmessage = uploadmsg; log.d("spandroid/cordovaapp/openfilechooser==>","accepttype ==>"+ accepttype); try { file imagestoragedir = new file( environment.getexternalstoragepublicdirectory( environment.directory_pictures) , "sp"); if (!imagestoragedir.exists()) { // create androidexamplefolder @ sdcard imagestoragedir.mkdirs(); } intent = new intent(intent.action_get_content); i.addcategory(intent.category_openable); if(accepttype.equals("video/*")){ log.d("spandroid/cordovaapp/openfilechooser==>","inside video ==>"+ accepttype); i.settype("video/*"); file file = new file( imagestoragedir + file.separator + "video_" + string.valueof(system.currenttimemillis()) + ".3gp"); final intent captureintent = new intent( mediastore.action_video_capture); mcapturedimageuri = uri.fromfile(file); captureintent.putextra(mediastore.extra_output, mcapturedimageuri); intent chooserintent = intent.createchooser(i, "file chooser"); // set camera intent file chooser chooserintent.putextra(intent.extra_initial_intents , new parcelable[] { captureintent }); log.d("spandroid/cordovaapp/openfilechooser==>","openfilechooser 11 !!"); this.cordova.getactivity().startactivityforresult(chooserintent, filechooser_resultcode); }else { // create camera captured image file path , name file file = new file( imagestoragedir + file.separator + "img_" + string.valueof(system.currenttimemillis()) + ".jpg"); mcapturedimageuri = uri.fromfile(file); // camera capture image intent final intent captureintent = new intent( android.provider.mediastore.action_image_capture); captureintent.putextra(mediastore.extra_output, mcapturedimageuri); i.settype("image/*"); intent chooserintent = intent.createchooser(i, "file chooser"); // set camera intent file chooser chooserintent.putextra(intent.extra_initial_intents , new parcelable[] { captureintent }); log.d("spandroid/cordovaapp/openfilechooser==>","openfilechooser 11 !!"); this.cordova.getactivity().startactivityforresult(chooserintent, filechooser_resultcode); } // create file chooser intent } catch (exception e) { toast.maketext(getbasecontext(), "camera exception:" + e, toast.length_long).show(); } } // android < 3.0 @suppresswarnings("unused") public void openfilechooser(valuecallback<uri> uploadmsg) { openfilechooser(uploadmsg, ""); } // android > 4.1.1 @suppresswarnings("unused") public void openfilechooser(valuecallback<uri> uploadmsg, string accepttype, string capture) { openfilechooser(uploadmsg, accepttype); } public boolean onconsolemessage(consolemessage cm) { onconsolemessage(cm.message(), cm.linenumber(), cm.sourceid()); return true; } public void onconsolemessage(string message, int linenumber, string sourceid) { log.d("spandroid", "spandroid: " + message); } }); } @override protected void onactivityresult(int requestcode, int resultcode, intent intent) { log.d("spandroid/cordovaapp/onactivityresult==>","resultcode ==>"+resultcode); log.d("spandroid/cordovaapp/onactivityresult==>","muploadmessage ==>"+ cordovaapp.muploadmessage); // log.d("spandroid/cordovaapp/onactivityresult==>","intent.getdata() ==>"+intent.getdata()); // todo auto-generated method stub if(requestcode==cordovachromeclient.filechooser_resultcode) { if (null == cordovaapp.muploadmessage) { return; } uri result=null; try{ if (resultcode != result_ok) { cordovaapp.muploadmessage.onreceivevalue(null); return; } else { // retrieve private variable if intent null result = intent == null ? mcapturedimageuri : intent.getdata(); } } catch(exception e) { // toast.maketext(getapplicationcontext(), "activity :"+e, toast.length_long).show(); } log.d("spandroid/cordovaapp/onactivityresult==>","result ==>"+result); cordovaapp.muploadmessage.onreceivevalue(result); cordovaapp.muploadmessage = null; } } } onactivityresult gettting cordovaapp.muploadmessage null. app restarting when choose image camera , not able upload image. happening phones only. phones moto-e moto-g showing upload issues
Comments
Post a Comment