java - cursor.getString returns null with a valid uri -


all of sudden program has stopped working.

i have uri: "content://com.android.providers.media.documents/document/image%3a13", file path image.

the path uri chosen so:

protected void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode,  data);         if(resultcode == result_ok) {             try {                  // bit here                 bitmap bitmap = getpath(data.getdata());                 log.i("bitmap", "bmp: " + data.getdata());              }catch (exception e){                 log.e("error", "error setting image.");                 e.printstacktrace();             }         }     } 

so, getpath() called, putting data in uri (uri correct, log shows that)

in getpath():

private bitmap getpath(uri uri) {          string[] projection = { mediastore.images.media.data };         cursor cursor = getcontentresolver().query(uri, projection, null, null,null);          cursor.movetofirst();          // line here, returns null reason.         string filepath = cursor.getstring(cursor.getcolumnindex(mediastore.images.media.data));          // convert file path bitmap image using below line.          log.i("file path", "file name: " + filepath); // comes out null in logcat          bitmap bitmap = bitmapfactory.decodefile(filepath);          filepathforupload = filepath;          try {             exifinterface exif = new exifinterface(filepath);             int orientation = exif.getattributeint(exifinterface.tag_orientation, exifinterface.orientation_undefined);             bitmap = rotatebitmap(bitmap, orientation);         }catch (exception e){             log.d("error", "error bitmap!");             e.printstacktrace();         }          return bitmap;     } 

logcat output:

 java.lang.illegalargumentexception: filename cannot null      @ android.media.exifinterface.<init>(exifinterface.java:121)      @ build.com.build.submitpicactivity.getpath(submitpicactivity.java:123)      @ build.com.build.submitpicactivity.onactivityresult(submitpicactivity.java:93)      @ android.app.activity.dispatchactivityresult(activity.java:5423)      @ android.app.activitythread.deliverresults(activitythread.java:3361)      @ android.app.activitythread.handlesendresult(activitythread.java:3408)      @ android.app.activitythread.access$1300(activitythread.java:135)      @ android.app.activitythread$h.handlemessage(activitythread.java:1244)      @ android.os.handler.dispatchmessage(handler.java:102)      @ android.os.looper.loop(looper.java:136)      @ android.app.activitythread.main(activitythread.java:5017)      @ java.lang.reflect.method.invokenative(native method)      @ java.lang.reflect.method.invoke(method.java:515)      @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779)      @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595)      @ dalvik.system.nativestart.main(native method) 

line 123 : string filepath = cursor.getstring(cursor.getcolumnindex(mediastore.images.media.data));

and line 93 is: bitmap bitmap = getpath(data.getdata());

any suggestions?

a uri not file. code using try file uri never reliable , not work going forward.

please consume uri appropriately, using contentresolver , methods openinputstream() , gettype(). in essence, treat uri same way url web server, , same reason: there no requirement content surfaced contentprovider coming ordinary file app can access.


Comments

Popular posts from this blog

matlab - "Contour not rendered for non-finite ZData" -

delphi - Indy UDP Read Contents of Adata -

javascript - Any ideas when Firefox is likely to implement lengthAdjust and textLength? -