In Android I'm trying to get an image from my gallery and convert it to base64, but the file path is a null reference -
here activity happening in:
package com.example.alexlevine.guestify; import android.content.intent; import android.database.cursor; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.drawable.bitmapdrawable; import android.net.uri; import android.os.bundle; import android.provider.mediastore; import android.support.annotation.nonnull; import android.support.design.widget.navigationview; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.app.appcompatactivity; import android.util.base64; import android.util.log; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.imageview; import android.widget.textview; import com.google.firebase.auth.firebaseauth; import com.google.firebase.auth.firebaseuser; import com.google.gson.gson; import org.json.jsonexception; import org.json.jsonobject; import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.bytearrayoutputstream; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.io.outputstream; import java.io.outputstreamwriter; import java.io.unsupportedencodingexception; import java.net.httpurlconnection; import java.net.url; public class profileactivity extends appcompatactivity implements view.onclicklistener, navigationview.onnavigationitemselectedlistener { textview t3; button chooseimg, uploadimg; imageview imgview; int pick_image_request = 1; uri filepath; string path; string encodedstring; // private firebaseuser user; private firebaseauth fbauth; /*private textview textviewuseremail; private button buttonlogout; private databasereference dbref;*/ private drawerlayout mdrawerlayout; private actionbardrawertoggle mtoggle; public static string b64; /** * message : enrollment processed * data : {"enrollment_id":"ahbzfmnodwlzcgrldgvjdg9ychclegpfbnjvbgxtzw50gicagid5r4ykda"} * success : true */ private string message; //private databean data; private boolean success; //firebasedatabase storage = firebasedatabase.getinstance(); public profileactivity() { } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_profile); b64 = null; mdrawerlayout = (drawerlayout) findviewbyid(r.id.nav); mtoggle = new actionbardrawertoggle(this, mdrawerlayout, r.string.open, r.string.close); mdrawerlayout.adddrawerlistener(mtoggle); mtoggle.syncstate(); setnavigationviewlistner(); getsupportactionbar().setdisplayhomeasupenabled(true); final firebaseuser user = firebaseauth.getinstance().getcurrentuser(); chooseimg = (button)findviewbyid(r.id.chooseimg); uploadimg = (button)findviewbyid(r.id.uploadimg); imgview = (imageview)findviewbyid(r.id.imgview); chooseimg.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(); intent.settype("image/*"); intent.setaction(intent.action_get_content); startactivityforresult(intent.createchooser(intent, "select image"), pick_image_request); } }); enrollimg ei = new enrollimg(); new enrollimg().execute(); string r = enrollimg.resulttouse; //t3.settext(r); gson gson = new gson(); // databean db = gson.fromjson(r, databean.class); //string enrollid = db.getenrollment_id(); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if (requestcode == pick_image_request && resultcode == result_ok && data != null && data.getdata() != null) { try { final uri imageuri = data.getdata(); path = getpath(imageuri); string[] filepathcolumn = {mediastore.images.media.data}; cursor cursor = getcontentresolver().query(imageuri, filepathcolumn, null, null, null); cursor.movetofirst(); int columnindex = cursor.getcolumnindex(filepathcolumn[0]); path = cursor.getstring(columnindex); cursor.close(); //toast.maketext(personaldetails.this,imagepath, toast.length_short).show(); final inputstream imagestream = getcontentresolver().openinputstream(imageuri); bitmap selectedimage = bitmapfactory.decodestream(imagestream); b64 = bitmaptostring(selectedimage); } catch (filenotfoundexception e) { e.printstacktrace(); } } } public string getpath(uri uri) { string[] projection = { mediastore.images.media.data }; cursor cursor = managedquery(uri, projection, null, null, null); if (cursor != null) { // here nullpointer if cursor null // can be, if used oi file manager picking media int column_index = cursor .getcolumnindexorthrow(mediastore.images.media.data); cursor.movetofirst(); return cursor.getstring(column_index); } else return null; } private void saveuserinformation() { //firebaseuser user = fbauth.getcurrentuser(); //dbref.child(user.getuid()).setvalue("exp"); } private void setnavigationviewlistner() { navigationview navigationview = (navigationview) findviewbyid(r.id.navdrawer); navigationview.setnavigationitemselectedlistener(this); } @override public boolean onnavigationitemselected(@nonnull menuitem item) { switch (item.getitemid()) { case r.id.nav_account: { break; } case r.id.create: { break; } case r.id.org_manage: { break; } case r.id.join: { break; } case r.id.history: { break; } case r.id.logout: { fbauth.signout(); finish();; startactivity(new intent(this, loginactivity.class)); break; } } return true; } @override public boolean onoptionsitemselected(menuitem item) { if(mtoggle.onoptionsitemselected(item)) { return true; } return super.onoptionsitemselected(item); } @override public void onclick(view view) { } public string bitmaptostring(bitmap bitmap) { bytearrayoutputstream baos = new bytearrayoutputstream(); bitmap.compress(bitmap.compressformat.jpeg, 70, baos); byte[] b = baos.tobytearray(); string temp = base64.encodetostring(b, base64.default); return temp; } string encodeimage(bitmap bitmap) { bitmapfactory.options options = null; options = new bitmapfactory.options(); options.insamplesize = 3; bytearrayoutputstream stream = new bytearrayoutputstream(); // must compress image reduce image size make upload // easy try { bitmap.compress(bitmap.compressformat.png, 90, stream); } catch (exception e1) { // todo auto-generated catch block } //system.out.println("size of bitmap " + sizeof(bitmap)); byte[] byte_arr = stream.tobytearray(); // encode image string try { encodedstring = base64.encodetostring(byte_arr, 0); } catch (exception e) { // todo auto-generated catch block } return encodedstring; } }
here logcat:
08-20 21:24:53.147 26753-26753/com.example.alexlevine.guestify e/androidruntime: fatal exception: main process: com.example.alexlevine.guestify, pid: 26753 java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=1, result=-1, data=intent { dat=content://com.google.android.apps.docs.storage/document/acc=1;doc=1715 flg=0x1 }} activity {com.example.alexlevine.guestify/com.example.alexlevine.guestify. profileactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.textview.settext(java.lang.charsequence)' on null object reference @ android.app.activitythread.deliverresults(activitythread.java:4323) @ android.app.activitythread.handlesendresult(activitythread.java:4366) @ android.app.activitythread.-wrap19(unknown source:0) @ android.app.activitythread$h.handlemessage(activitythread.java:1649) @ android.os.handler.dispatchmessage(handler.java:105) @ android.os.looper.loop(looper.java:164) @ android.app.activitythread.main(activitythread.java:6540) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:767) caused by: java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.textview.settext(java.lang.charsequence)' on null object reference @ com.example.alexlevine.guestify.profileactivity.onactivityresult (profileactivity.java:143) @ android.app.activity.dispatchactivityresult(activity.java:7237) @ android.app.activitythread.deliverresults(activitythread.java:4319) @ android.app.activitythread.handlesendresult(activitythread.java:4366) @ android.app.activitythread.-wrap19(unknown source:0) @ android.app.activitythread$h.handlemessage(activitythread.java:1649) @ android.os.handler.dispatchmessage(handler.java:105) @ android.os.looper.loop(looper.java:164) @ android.app.activitythread.main(activitythread.java:6540) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:767) 08-20 21:24:53.147 26753-26753/com.example.alexlevine.guestify e/uncaughtexception: java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=1, result=-1, data=intent { dat=content://com.google.android.apps.docs.storage/document/acc=1;doc=1715 flg=0x1 }} activity {com.example.alexlevine.guestify/com.example.alexlevine.guestify. profileactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.textview.settext(java.lang.charsequence)' on null object reference @ android.app.activitythread.deliverresults(activitythread.java:4323) @ android.app.activitythread.handlesendresult(activitythread.java:4366) @ android.app.activitythread.-wrap19(unknown source:0) @ android.app.activitythread$h.handlemessage(activitythread.java:1649) @ android.os.handler.dispatchmessage(handler.java:105) @ android.os.looper.loop(looper.java:164) @ android.app.activitythread.main(activitythread.java:6540) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:767) caused by: java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.textview.settext(java.lang.charsequence)' on null object reference @ com.example.alexlevine.guestify.profileactivity.onactivityresult (profileactivity.java:143) @ android.app.activity.dispatchactivityresult(activity.java:7237) @ android.app.activitythread.deliverresults(activitythread.java:4319) @ android.app.activitythread.handlesendresult(activitythread.java:4366) @ android.app.activitythread.-wrap19(unknown source:0) @ android.app.activitythread$h.handlemessage(activitythread.java:1649) @ android.os.handler.dispatchmessage(handler.java:105) @ android.os.looper.loop(looper.java:164) @ android.app.activitythread.main(activitythread.java:6540) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:767)
i looked @ several online forums , tried many variations of methods i'm using , convert images , nothing seems working. i'm not sure if null has image i'm testing in specific or code; code because has errors on homepage. please take @ this? thx!
you need initialize textview.it throws nullpointerexception textview not image related code. first initialize textview try settext it.
Comments
Post a Comment