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.
- Envío de una solicitud JSON HTTP POST desde Android
- Admob no llena todo el ancho
- Capturando al ejecutor para el subproceso actual
- Catering para dispositivos que ejecutan frijol Jelly así como versiones posteriores a Jelly bean cuando se obtiene el uso de datos de la aplicación
- Gson deserializa json con diferentes tipos de valor
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?
- ¿Cómo se consigue rajawali para trabajar (tutorial 1 en git)
- Android: UnsatisfiedLinkError debido a la estructura de carpetas en "lib"?
- Cómo calcular el ancho de la fuente de cadena en píxeles?
- ¿Es posible utilizar Java 8 para el desarrollo de Android?
- Utilizando una casilla de verificación con un enfoque en blanco falso, impide que los clics de vista de lista
- Cómo convertir HashMap a json Array en android?
- Descubrimiento del servicio UPnP nativo de Android
- Error en la compilación de Android: java.lang.IllegalArgumentException: ya agregado: Lcom / google / api / client / escape / CharEscapers;
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); }
- GooglePlayServicesUtil error botón de diálogo no hace nada
- Java lanza NotSerializableException después de agregar su propia interfaz