Android guarda la imagen de la cámara en el almacenamiento local

Hoy tengo que lidiar con una cosa difícil.

Empiezo la cámara y quiero guardar la imagen tomada directamente a mi almacenamiento interno, sin moverlo en él.

File targetDir = new File(getApplicationContext().getFilesDir()+File.separator+"PROJECTMAIN"+File.separator+"SUBFORDER"); targetDir.mkdirs(); //create the folder if they don't exist File externalFile = new File(targetDir, "picturename.jpg"); Uri imageURI = Uri.fromFile(externalFile); Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageURI); startActivityForResult(takePictureIntent, actionCode); 

Parece que si intento guardarlos directamente en el almacenamiento interno, la cámara ignora mi clic en el botón "ok" después de tomar la fotografía. Creo que hay algo mal con el URI "interno", porque si uso Environment.getExternalStorageDirectory() lugar de getApplicationContext().getFilesDir() para extra_output, todo funciona bien, pero luego tengo que mover el archivo después en el interior (El proceso de movimiento funciona bien con "getApplicationContext (). GetFilesDir ()")

La cámara no hace nada cuando tomo una foto y pulse el botón ok para continuar con el URI interno … No puedo creer que sea tan difícil con el almacenamiento en Android.

¿Algunas ideas? Tal vez la cámara sólo permite guardar imágenes en el almacenamiento externo?

Prueba el siguiente código

 File dir= context.getDir("dirname", Context.MODE_PRIVATE); //Creates Dir inside internal memory File file= new File(dir, "filename"); //It has directory details and file name FileOutputStream fos = new FileOutputStream(file); 

Para la versión superior de Android 7.0 use este código,

 <application ...> <activity> .... </activity> <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.your.package.fileProvider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> </application> 

Ahora crear un archivo en la carpeta de recursos xml,

 <?xml version="1.0" encoding="utf-8"?> <paths> <external-path path="Android/data/com.your.package/" name="files_root" /> <external-path path="." name="external_storage_root" /> </paths> 

Entonces cuando el uso para la intención de la cámara utilice esto,

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(getContext(), "com.your.package.fileProvider", newFile); intent.setDataAndType(contentUri, type); } else { intent.setDataAndType(Uri.fromFile(newFile), type); } 
  • Android - Iniciar el servicio en el arranque
  • ¿El método String isEmpty no está disponible en los niveles de API de Android <10?
  • ¿Por qué DrawerLayout a veces falla al abrirse?
  • Android Debug almacén de claves
  • Reconocimiento de voz Java como androides
  • ¿Es esta la forma correcta de iniciar una actividad?
  • Error: androidmanifest.xml file missing -> ¿Qué estoy perdiendo?
  • 'java.lang.String android.os.Bundle.getString (java.lang.String)' en una referencia de objeto nulo
  • Cómo crear una aplicación utilizando maven
  • Comenzando en una nueva línea en el emulador (proyecto Android Eclipse)
  • Cómo obtener el valor de los atributos 'resource id' y 'content description' del elemento android en appium java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.