Here is My two activity . I am trying to display the image in a image view of other activity . for camera its work fine But for gallery it is not display in image view. i.e. after selecting the image in imageview, it seems blank.I have seen many answer on SO But none of them work for me.
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* @author aditya
*/
public class UploadFinding extends BaseActivity {
// LogCat tag
private static final String TAG = UploadFinding.class.getSimpleName();
Bitmap b;
public static final String IMAGE_URL = "imageURL";
// Camera activity request codes
private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
private static final int CAMERA_CAPTURE_VIDEO_REQUEST_CODE = 1337;
String mCurrentPhotoPath;
String imgDecodableString;
public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;
protected static final int RESULT_LOAD_IMAGE = 1;
Button capture_photo, capture_video;
private Uri mFileUri;
TextView textview1,textview2,textview3;
private final Context mContext = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* Adding our layout to parent class frame layout.
*/
getLayoutInflater().inflate(R.layout.upload_finding_layout, frameLayout);
//for Design
textview1 = (TextView)findViewById(R.id.textView1);
Typeface face1= Typeface.createFromAsset(getAssets(), "fonts/AlexBrush-Regular.ttf");
textview1.setTypeface(face1);
textview2 = (TextView)findViewById(R.id.textView2);
Typeface face2= Typeface.createFromAsset(getAssets(), "fonts/AlexBrush-Regular.ttf");
textview2.setTypeface(face2);
textview3 = (TextView)findViewById(R.id.textView3);
Typeface face3= Typeface.createFromAsset(getAssets(), "fonts/AlexBrush-Regular.ttf");
textview3.setTypeface(face3);
capture_photo = (Button) findViewById(R.id.capture_photo);
capture_video = (Button) findViewById(R.id.capture_video);
capture_photo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(UploadFinding.this);
alertDialogBuilder.setTitle("Capture");
alertDialogBuilder.setPositiveButton("From Camera",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent cameraIntent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
mFileUri = getOutputMediaFileUri(1);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
startActivityForResult(cameraIntent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}
})
.setNegativeButton("From Gallery", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent i = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
mFileUri = getOutputMediaFileUri(1);
i.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
//End Btn_Click
// For Camera
capture_video.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(UploadFinding.this);
alertDialogBuilder.setTitle("Capture");
alertDialogBuilder.setPositiveButton("From Camera",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5);
mFileUri = getOutputMediaFileUri(2);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
startActivityForResult(cameraIntent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
}
})
.setNegativeButton("From Gallery", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent i = new Intent(Intent.ACTION_PICK,
MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
i.putExtra(MediaStore.EXTRA_OUTPUT, mFileUri);
startActivityForResult(i, RESULT_LOAD_IMAGE);
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
/**
* Setting title and itemChecked
*/
mDrawerList.setItemChecked(position, true);
setTitle(listArray[position]);
}
/**
* Here we store the file url as it will be null after returning from camera
* app
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// save file url in bundle as it will be null on screen orientation
// changes
outState.putParcelable("file_uri", mFileUri);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// get the file url
mFileUri = savedInstanceState.getParcelable("file_uri");
}
//
//
//multipart
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if the result is capturing Image
if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// successfully captured the image
// launching upload activity
launchUploadActivity(true);
} else if (resultCode == RESULT_CANCELED) {
// user cancelled Image capture
Toast.makeText(getApplicationContext(),
"User cancelled image capture", Toast.LENGTH_SHORT)
.show();
} else {
// failed to capture image
Toast.makeText(getApplicationContext(),
"Sorry! Failed to capture image", Toast.LENGTH_SHORT)
.show();
}
} else if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// video successfully recorded
// launching upload activity
launchUploadActivity1(true);
} else if (resultCode == RESULT_CANCELED) {
// user cancelled recording
Toast.makeText(getApplicationContext(),
"User cancelled video recording", Toast.LENGTH_SHORT)
.show();
} else {
// failed to record video
Toast.makeText(getApplicationContext(),
"Sorry! Failed to record video", Toast.LENGTH_SHORT)
.show();
}
}
if(requestCode==RESULT_LOAD_IMAGE){
if (resultCode == RESULT_OK) {
launchUploadActivity2(true);
}
}
// {
}
private void launchUploadActivity(boolean isImage) {
Intent i = new Intent(UploadFinding.this, Finding_Preview_Image.class);
i.putExtra("filePath", mFileUri.getPath());
i.putExtra("isImage", isImage);
startActivity(i);
}
private void launchUploadActivity1(boolean isImage) {
Intent i = new Intent(UploadFinding.this, Finding_preview_video.class);
i.putExtra("filePath", mFileUri.getPath());
i.putExtra("isImage", isImage);
startActivity(i);
}
private void launchUploadActivity2(boolean isImage) {
Intent i = new Intent(UploadFinding.this, Finding_Preview_Image.class);
i.putExtra("filePath", mFileUri.getPath());
i.putExtra("isImage", isImage);
startActivity(i);
}
private Uri getOutputMediaFileUri(int type) {
return Uri.fromFile(getOutputMediaFile(type));
}
// Return image / video
private static File getOutputMediaFile(int type) {
// External sdcard location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
Config.IMAGE_DIRECTORY_NAME);
// // Save a file: path for use with ACTION_VIEW intents
// mCurrentPhotoPath = "file:" + image.getAbsolutePath();
// return image;
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(TAG, "Oops! Failed create "
+ Config.IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
} else if (type == MEDIA_TYPE_VIDEO) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "VID_" + timeStamp + ".mp4");
}
else {
return null;
}
return mediaFile;
}
}
Next activity
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import android.widget.VideoView;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;
public class Finding_Preview_Image extends BaseActivity {
private Button finding_upload_button;
// private ImageView photo;
// multipart
// LogCat tag
private static final String TAG = UploadFinding.class.getSimpleName();
private ProgressBar progressBar;
private String filePath = null;
// private TextView txtPercentage;
private ImageView photo;
private EditText fullname;
private VideoView vidPreview;
private Button Finding_upload_button;
long totalSize = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLayoutInflater().inflate(R.layout.finding__preview_image, frameLayout);
finding_upload_button = (Button) findViewById(R.id.finding_upload_button);
photo = (ImageView) findViewById(R.id.find_Image);
fullname = (EditText) findViewById(R.id.editText);
EditText fullname = (EditText) findViewById(R.id.editText);
EditText location = (EditText) findViewById(R.id.editText2);
EditText description = (EditText) findViewById(R.id.editText3);
ImageView photo = (ImageView) findViewById(R.id.find_Image);
//multipart
// txtPercentage = (TextView) findViewById(R.id.txtPercentage);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
// vidPreview = (VideoView) findViewById(R.id.videoPreview);
// Receiving the data from previous activity
Intent i = getIntent();
// image or video path that is captured in previous activity
filePath = i.getStringExtra("filePath");
// boolean flag to identify the media type, image or video
boolean isImage = i.getBooleanExtra("isImage", true);
if (filePath != null) {
// Displaying the image or video on the screen
Log.i("UploadApp", "file path is null");
previewMedia(isImage);
} else {
Toast.makeText(getApplicationContext(),
"Sorry, file path is missing!", Toast.LENGTH_LONG).show();
}
finding_upload_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// uploading the file to server
new UploadFileToServer().execute();
}
});
}
//
//Displaying captured image/video on the screen
private void previewMedia(boolean isImage) {
// Checking whether captured media is image or video
if (isImage) {
photo.setVisibility(View.VISIBLE);
// vidPreview.setVisibility(View.GONE);
// bimatp factory
BitmapFactory.Options options = new BitmapFactory.Options();
// down sizing image as it throws OutOfMemory Exception for larger
// images
options.inSampleSize = 88;
final Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
options.inJustDecodeBounds = true;
photo.setImageBitmap(bitmap);
}
//else {
// photo.setVisibility(View.GONE);
// vidPreview.setVisibility(View.VISIBLE);
// vidPreview.setVideoPath(filePath);
// // start playing
// vidPreview.start();
// }
}
/**
* Uploading the file to server
* */
private class UploadFileToServer extends AsyncTask<Void, Integer, String> {
@Override
protected void onPreExecute() {
// setting progress bar to zero
progressBar.setProgress(0);
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... progress) {
// Making progress bar visible
progressBar.setVisibility(View.VISIBLE);
// updating progress bar value
progressBar.setProgress(progress[0]);
// updating percentage value
// txtPercentage.setText(String.valueOf(progress[0]) + "%");
}
@Override
protected String doInBackground(Void... params) {
return uploadFile();
}
@SuppressWarnings("deprecation")
private String uploadFile() {
String responseString = null;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL);
Log.i("UploadApp", "upload url: " + Config.FILE_UPLOAD_URL);
AndroidMultiPartEntity entity;
entity = new AndroidMultiPartEntity(
new AndroidMultiPartEntity.ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
File sourceFile;
sourceFile = new File(filePath);
Log.i("UploadApp", "file path: " + filePath);
// Adding file data to http body
entity.addPart("image", new FileBody(sourceFile));
entity.addPart("fullname", new StringBody(fullname.getText().toString()));
totalSize = entity.getContentLength();
httppost.setEntity(entity);
// Making server call
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// Server response
responseString = EntityUtils.toString(r_entity);
} else {
responseString = "Error occurred! Http Status Code: "
+ statusCode;
}
} catch (ClientProtocolException e) {
responseString = e.toString();
Log.e("UploadApp", "exception: " + responseString);
} catch (IOException e) {
responseString = e.toString();
Log.e("UploadApp", "exception: " + responseString);
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
Log.e(TAG, "Response from server: " + result);
// showing the server response in an alert dialog
showAlert(result);
super.onPostExecute(result);
}
}
/**
* Method to show alert dialog
* */
private void showAlert(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message).setTitle("Response from Servers")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do nothing
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
Use this for Pic from gallery
Launch gallery intent and select image
Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE);
Then in on Activity result
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if(requestCode==RESULT_LOAD_IMAGE){
mFileUri=data.getData();
launchUploadActivity2(true);
}
}
}
In launchUploadActivity2(true)
String realPath=getPath(this, mFileUri)
i.putExtra("filePath", realPath);