Almacene la imagen de la cámara en el directorio de la caché de aplicaciones privadas

Me gustaría capturar una imagen de la cámara y guardarla en el directorio de caché de aplicación privada. Me doy cuenta de que tengo que dar permiso a la aplicación de cámara para escribir en mi directorio privado, por lo que he añadido el flag FLAG_GRANT_WRITE_URI_PERMISSION .

Lo que pasa es que la aplicación de cámara se abre, puedo tomar la foto, pero cuando hago clic en el botón Aceptar, no pasa nada. La aplicación de cámara permanece abierta. No hay salida de registro. Supongo que es debido a un problema de permiso.

 private void getCameraImage() { try { mTmpFile = File.createTempFile("tmp", ".jpg", getCacheDir()); Uri imgUri = Uri.fromFile(mTmpFile); Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(MediaStore.EXTRA_OUTPUT, imgUri); i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // i.setData(imgUri); // if uncommented, i get an ActivityNotFound Exception startActivityForResult(i, REQUEST_CAMERA); } catch (IOException e) { Log.e(TAG, "getCameraImage()", e); Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); } } 

¿Alguna idea, sobre cómo podría corregir eso?

Editar:

Cuando cambio el directorio a la tarjeta SD pública, entonces funciona bien.

 mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory()); 

Gracias Simon

En lugar de pasar el Uri para almacenar la imagen que puede utilizar http://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback , android.hardware.Camera.PictureCallback, Android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback)

Y obtener el contenido en la memoria de la aplicación. Desde allí podrás hacer todo lo que quieras.

No olvide que las aplicaciones de la cámara están utilizando también la galería y la aplicación de la galería no está permitido para comprobar su directorio privado.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.