Android app Force close issue while submit in blank fields

edited November 2014 in Android Mode

Hi friends,

Here is my code for uploading image to server from gallery. My problem is when i upload with blank fields the app force close.Also i have set a validation for blank submission but it is not working because of force close issue. Any help will be appreciated.

import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.Calendar; import java.util.GregorianCalendar;

import android.app.ProgressDialog; import android.content.Intent;
import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnClickListener{

private TextView messageText;
private EditText title,desc;
private Button uploadButton, btnselectpic;
private ImageView imageview;
private int serverResponseCode = 0;
private ProgressDialog dialog = null;

private String upLoadServerUri = null;
private String imagepath=null;
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    uploadButton = (Button)findViewById(R.id.uploadButton);
    btnselectpic = (Button)findViewById(R.id.button_selectpic);
    messageText  = (TextView)findViewById(R.id.messageText);
    imageview = (ImageView)findViewById(R.id.imageView_pic);
    title=(EditText)findViewById(R.id.ettittle);
    desc=(EditText)findViewById(R.id.etdesc);

    btnselectpic.setOnClickListener(this);
    uploadButton.setOnClickListener(this);
    upLoadServerUri = "192.168.2.7/news/upload.php";
    ImageView img= new ImageView(this);

}


@Override

public void onClick(View arg0) { if(arg0==btnselectpic) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Complete action using"), 1); } else if (arg0==uploadButton) {

dialog = ProgressDialog.show(MainActivity.this, "", "Uploading file...", true);
messageText.setText("uploading started.....");
new Thread(new Runnable() {
             public void run() {

                  uploadFile(imagepath);

             }
           }).start();     

}

else if (TextUtils.isEmpty(title.toString()) || TextUtils.isEmpty(desc.toString()) || TextUtils.isEmpty(imageview.toString()) ) {

  messageText.setText("Enter details");

}

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

 if (requestCode == 1 && resultCode == RESULT_OK) {
        //Bitmap photo = (Bitmap) data.getData().getPath(); 
        //Uri imagename=data.getData();
        Uri selectedImageUri = data.getData();
        imagepath = getPath(selectedImageUri);
        Bitmap bitmap=BitmapFactory.decodeFile(imagepath);
        imageview.setImageBitmap(bitmap);
        messageText.setText("Uploading file path:" +imagepath);



 }
}
  public String getPath(Uri uri) {
         String[] projection = { MediaStore.Images.Media.DATA };
         Cursor cursor = managedQuery(uri, projection, null, null, null);
         int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
         cursor.moveToFirst();
         return cursor.getString(column_index);
     }

public int uploadFile(String sourceFileUri) {

    //sourceFileUri.replace(sourceFileUri, "ashifaq");
    //

    int day, month, year;
    int second, minute, hour;
    GregorianCalendar date = new GregorianCalendar();

    day = date.get(Calendar.DAY_OF_MONTH);
    month = date.get(Calendar.MONTH);
    year = date.get(Calendar.YEAR);

    second = date.get(Calendar.SECOND);
    minute = date.get(Calendar.MINUTE);
    hour = date.get(Calendar.HOUR);

    String name=(hour+""+minute+""+second+""+day+""+(month+1)+""+year);
    String tag=name+".jpg";
    String fileName = sourceFileUri.replace(sourceFileUri,tag);

      HttpURLConnection conn = null;
      DataOutputStream dos = null;  
      String lineEnd = "\r\n";
      String twoHyphens = "--";
      String boundary = "*****";
      int bytesRead, bytesAvailable, bufferSize;
      byte[] buffer;
      int maxBufferSize = 1 * 1024 * 1024; 
      File sourceFile = new File(sourceFileUri); 

      if (!sourceFile.isFile()) {

        dialog.dismiss(); 

        Log.e("uploadFile", "Source File not exist :"+imagepath);

        runOnUiThread(new Runnable() {
            public void run() {
             messageText.setText("Source File not exist :"+ imagepath);
            }
        }); 

        return 0;

      }
      else
      {
        try { 

           // open a URL connection to the Servlet
            FileInputStream fileInputStream = new FileInputStream(sourceFile);
            String titleValue = title.getText().toString();
            String descValue = desc.getText().toString();
            int variablesAdded = 0;

            if(titleValue != null && !titleValue.equals("")) {
                if(variablesAdded == 0)
                    upLoadServerUri = upLoadServerUri + "?title=" + URLEncoder.encode(titleValue, "UTF-8");
                else
                    upLoadServerUri = upLoadServerUri + "&title=" + URLEncoder.encode(titleValue, "UTF-8");
                variablesAdded++;
            }

            if(descValue != null && !descValue.equals("")) {
                if(variablesAdded == 0)
                    upLoadServerUri = upLoadServerUri + "?desc=" + URLEncoder.encode(descValue, "UTF-8");
                else
                    upLoadServerUri = upLoadServerUri + "&desc=" + URLEncoder.encode(descValue, "UTF-8");
                variablesAdded++;
            }

            URL url = new URL(upLoadServerUri);

            // Open a HTTP  connection to  the URL
            conn = (HttpURLConnection) url.openConnection(); 
            conn.setDoInput(true); // Allow Inputs
            conn.setDoOutput(true); // Allow Outputs
            conn.setUseCaches(false); // Don't use a Cached Copy
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("ENCTYPE", "multipart/form-data");
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            conn.setRequestProperty("uploaded_file", fileName); 

            dos = new DataOutputStream(conn.getOutputStream());

            dos.writeBytes(twoHyphens + boundary + lineEnd); 
            dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                                + fileName + "\"" + lineEnd);

            dos.writeBytes(lineEnd);




            // create a buffer of  maximum size
            bytesAvailable = fileInputStream.available(); 

            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];

            // read file and write it into form...
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);  

            while (bytesRead > 0) {

              dos.write(buffer, 0, bufferSize);
              bytesAvailable = fileInputStream.available();
              bufferSize = Math.min(bytesAvailable, maxBufferSize);
              bytesRead = fileInputStream.read(buffer, 0, bufferSize);   

             }

            // send multipart form data necesssary after file data...
            dos.writeBytes(lineEnd);
            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            // Responses from the server (code and message)
            serverResponseCode = conn.getResponseCode();
            String serverResponseMessage = conn.getResponseMessage();

            Log.i("uploadFile", "HTTP Response is : " 
              + serverResponseMessage + ": " + serverResponseCode);

            if(serverResponseCode == 200){

                runOnUiThread(new Runnable() {
                     public void run() {
                      String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                              +" C:/wamp/wamp/www/uploads";
                      messageText.setText(msg);
                         Toast.makeText(MainActivity.this, "File Upload Complete.", Toast.LENGTH_SHORT).show();
                     }
                 });                
            }    

            //close the streams //
            fileInputStream.close();
            dos.flush();
            dos.close();

       } catch (MalformedURLException ex) {

           dialog.dismiss();  
           ex.printStackTrace();

           runOnUiThread(new Runnable() {
               public void run() {
                messageText.setText("MalformedURLException Exception : check script url.");
                Toast.makeText(MainActivity.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
               }
           });

           Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
       } catch (Exception e) {

           dialog.dismiss();  
           e.printStackTrace();

           runOnUiThread(new Runnable() {
               public void run() {
                messageText.setText("Got Exception : see logcat ");
                   Toast.makeText(MainActivity.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show();
               }
           });
           Log.e("Upload file to server Exception", "Exception : "  + e.getMessage(), e);  
       }
       dialog.dismiss();       
       return serverResponseCode; 

       } // End else block 
     }

}

Sign In or Register to comment.