When select image from gallery, the uri is: /storage/emulated/0/Pictures/image:49769
and i need: /storage/emulated/0/Pictures/image.jpg
How do I get the actual name of the image?
I have this now:
if(requestCode==REQ_CODE_PICTURE && resultCode==RESULT_OK && data != null && data.getData() != null) {
fileUri = data.getData();
imageView.setImageURI(fileUri);
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/" + fileUri.getPathSegments().get(fileUri.getPathSegments().size()-1));
Uri contentUri = Uri.parse(f.getAbsolutePath());
//uriToUpload = contentUri.toString();
uriToUpload = getRealPathFromURI(contentUri);
Log.i("AAAAAAA", uriToUpload);
public String getRealPathFromURI(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
And this is the error in cursor.moveToFirst():
12-19 11:39:16.469 5096-5096/com.example.formador.a42_camera E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.formador.a42_camera, PID: 5096 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=234, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:49769 flg=0x1 }} to activity {com.example.formador.a42_camera/com.example.formador.a42_camera.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getColumnIndexOrThrow(java.lang.String)' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThread.java:3798) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3841) at android.app.ActivityThread.access$1400(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:234) at android.app.ActivityThread.main(ActivityThread.java:5526) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getColumnIndexOrThrow(java.lang.String)' on a null object reference at com.example.formador.a42_camera.MainActivity.getRealPathFromURI(MainActivity.java:163) at com.example.formador.a42_camera.MainActivity.onActivityResult(MainActivity.java:147) at android.app.Activity.dispatchActivityResult(Activity.java:6490) at android.app.ActivityThread.deliverResults(ActivityThread.java:3794) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3841) at android.app.ActivityThread.access$1400(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:234) at android.app.ActivityThread.main(ActivityThread.java:5526) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)