Sei que isso já foi respondido antes, mas sei que muitas pessoas se incomodam com isso, então vou adicionar um comentário.
Eu tive exatamente o mesmo problema no meu Nexus One. Era do arquivo que não existia no disco antes do aplicativo da câmera ser iniciado. Portanto, verifiquei se o arquivo existente antes iniciava o aplicativo da câmera. Aqui está um código de exemplo que eu usei:
String storageState = Environment.getExternalStorageState();
if(storageState.equals(Environment.MEDIA_MOUNTED)) {
String path = Environment.getExternalStorageDirectory().getName() + File.separatorChar + "Android/data/" + MainActivity.this.getPackageName() + "/files/" + md5(upc) + ".jpg";
_photoFile = new File(path);
try {
if(_photoFile.exists() == false) {
_photoFile.getParentFile().mkdirs();
_photoFile.createNewFile();
}
} catch (IOException e) {
Log.e(TAG, "Could not create file.", e);
}
Log.i(TAG, path);
_fileUri = Uri.fromFile(_photoFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE );
intent.putExtra( MediaStore.EXTRA_OUTPUT, _fileUri);
startActivityForResult(intent, TAKE_PICTURE);
} else {
new AlertDialog.Builder(MainActivity.this)
.setMessage("External Storeage (SD Card) is required.\n\nCurrent state: " + storageState)
.setCancelable(true).create().show();
}
Primeiro, crio um nome de arquivo único (um pouco) usando um hash MD5 e o coloco na pasta apropriada. Depois, verifico se ele existe (não deveria, mas é uma boa prática verificar de qualquer maneira). Se ele não existir, eu obtenho o diretório pai (uma pasta) e crio a hierarquia de pastas até ele (portanto, se as pastas que antecedem o local do arquivo não existirem, elas seguirão esta linha. Eu crio o arquivo.Quando o arquivo é criado, pego o Uri e o passo para a intenção e, em seguida, o botão OK funciona como esperado e tudo fica dourado.
Agora, quando o botão OK for pressionado no aplicativo da câmera, o arquivo estará presente no local especificado. Neste exemplo, seria /sdcard/Android/data/com.example.myapp/files/234asdioue23498ad.jpg
Não há necessidade de copiar o arquivo no "onActivityResult", conforme publicado acima.