First of all pass the Intent to pick the image from the external storage.. or gelllary
Intent intent = new Intent(Intent.ACTION_PICK,
Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 0);
OnActivityResult write the following code snippet
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
image.setImageBitmap(null);
//Uri return from external activity
orgUri = data.getData();
text1.setText("Returned Uri: " + orgUri.toString() + "\n");
//path converted from Uri
convertedPath = getRealPathFromURI(orgUri);
text2.setText("Real Path: " + convertedPath + "\n");
//Uri convert back again from path
uriFromPath = Uri.fromFile(new File(convertedPath));
text3.setText("Back Uri: " + uriFromPath.toString() + "\n");
}
}
Getting the real path of the Image using the Uri returned in OnActivityResult...
public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
//This method was deprecated in API level 11
//Cursor cursor = managedQuery(contentUri, proj, null, null, null);
CursorLoader cursorLoader = new CursorLoader(
this,
contentUri, proj, null, null, null);
Cursor cursor = cursorLoader.loadInBackground();
int column_index =
cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}