Salve, sto scrivendo la tesi per la mia laurea e mi sono bloccato su un punto chiave del mio programma...Sto cercando di fare 2 intent, 1 su aprire la galleria delle immagini, selezionare una foto e mandare l'indirizzo su un'atra activity, invece la seconda è quella di aprire la fotocamera, scattare una foto e salvarla in una cartella creata da me. I problemi sono i seguenti, quando scatto la foto mi crasha tutto e il secondo che quando annullo la scelta della galleria mi crasha. Mi serve un professionista e nn so dove altro andare. Vi ringrazio per il tempo che vi sto facendo perdere.

codice:
public class AddActivity extends Activity {
    public static final int IMAGE_CODE=123;
    private static final int PHOTO_CODE = 1;
    private Uri fileUri;



	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_add);
		init();
	}

		private void init()
	{
			ImageButton b1 = (ImageButton) findViewById(R.id.imageButton1);
			ImageButton b2 = (ImageButton) findViewById(R.id.imageButton2);
			b1.setOnClickListener(new View.OnClickListener() 
			{
			@Override
			  public void onClick(View view) 
			{ 
			    startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI),IMAGE_CODE);
			  }
			});
		b2.setOnClickListener(new View.OnClickListener() {
			@Override
			  public void onClick(View view) 
			{ 
				if(checkCameraHdw(getBaseContext()))
				{
				
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

		            fileUri = getOutputMediaFile(); // creare un file x salvare
			    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set nome foto
			    
			    // start the image capture Intent
			    startActivityForResult(intent, PHOTO_CODE);
				}
				
			  }
			});

	}
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {   
	        if (requestCode == IMAGE_CODE) 
	        {
	            if (resultCode == RESULT_OK) 
		        {
		                String pathImage=data.getDataString();
		      			Intent myIntent = new Intent(this, FormaddActivity.class);
		      			myIntent.putExtra("path",pathImage);
		      			startActivity(myIntent);
		        }
            } else if (resultCode == RESULT_CANCELED) {
                // User cancelleto
            } else {
                // fallito
            }
		        if (requestCode == PHOTO_CODE) {
		            if (resultCode == RESULT_OK) {
		                // Image captured and saved to fileUri specified in the Intent
		                Toast.makeText(this, "Image saved to:\n" +
		                         data.getData(), Toast.LENGTH_LONG).show();
		            } else if (resultCode == RESULT_CANCELED) {
		                // User cancellato
		            } else {
		                // Scatto fallito
		            }
		        }


		}
		/** Controllo se è presente la fotocamera */
		private boolean checkCameraHdw(Context context) {
		    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
		        return true;
		    } else {
                Toast.makeText(this, "Il dispositivo non ha la fotocamera",Toast.LENGTH_LONG).show();
		        return false;
		    }
		}
		
		

		private Uri getOutputMediaFile(){
		  File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
		              Environment.DIRECTORY_PICTURES), "VirtuoSa");

		    if (! mediaStorageDir.exists()){
		        if (! mediaStorageDir.mkdirs()){
	                Toast.makeText(this, "Non è stato possibile salvare la foto",Toast.LENGTH_LONG).show();
		            return null;
		        }
		    }

		    // Crea a media file name
		    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
		    File mediaFile;

		        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
		        "IMG_"+ timeStamp + ".jpg");

	            Toast.makeText(this, "onActivityResult"+ mediaFile,Toast.LENGTH_LONG).show();
		        return Uri.fromFile(mediaFile);
		}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.add, menu);
		return true;
	}

}