images - mediastore android
Por qué Images.Media.insertImage devuelve null (6)
Asegúrese de haber agregado permisos en su archivo de manifiesto.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.read_external_storage" />
Luego agrega este código antes de llamar
MediaStore.Images.Media.insertImage
File sdcard = Environment.getExternalStorageDirectory();
if (sdcard != null) {
File mediaDir = new File(sdcard, "DCIM/Camera");
if (!mediaDir.exists()) {
mediaDir.mkdirs();
}
}
Tengo un código donde ejecuto el método MediaStore.Images.Media.insertImage (insertándolo desde una fuente, no un nombre de archivo). Este código guarda la imagen en el MediaStore y devuelve el uri de la imagen. Sé que cuando falla por alguna razón, devolverá un valor nulo en lugar de un uri. Esta imagen ha sido descargada varias veces por muchas personas y de vez en cuando volverá a ser nulo con este método. Nunca me había pasado esto, así que no tengo idea de lo que está pasando. ¿Cuáles son las razones por las que esto podría suceder? Hay otra post con el mismo problema, pero la respuesta es un enlace al código fuente de MediaStore, pero ese enlace va a una página que dice que el enlace no está disponible. Cualquier ayuda sería apreciada. Gracias.
Después de retirar mi tarjeta SD, recibí este error, así que sé que podría ser una razón, no estoy seguro, pero creo que también sucedería si la tarjeta estuviera llena. Todavía me pregunto si podría haber otra razón también.
Cuando tuve un problema así, lo arreglé agregando permisos:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Estaba ejecutando MediaStore.Images.Media.insertImage
antes de obtener el permiso del usuario para WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE que estaba causando una ruta nula
Así que asegúrese de que el usuario haya permitido el permiso y luego almacenar la imagen
MediaStore.Images.Media.insertImage está realmente accediendo al almacenamiento externo para guardar la imagen.
Algunos recordatorios importantes que pueden estar causando que tu aplicación falle:
Una conexión USB bloqueará el uso de la tarjeta SD si está en modo de almacenamiento masivo.
Puede haber otros factores que pueden hacer que una tarjeta SD sea inaccesible, así que asegúrese de poder acceder a la tarjeta SD utilizando primero un explorador de archivos.
Asegúrese de que sus permisos estén configurados correctamente con android.permission.WRITE_EXTERNAL_STORAGE
Publicar esto aquí para completar, ya que estaba obteniendo un nulo de insertImage, y la causa era 1.
Parece que sucede cuando no tiene un directorio / sdcard / DCIM / Camera en algunas versiones de Android. Crear este directorio (y tener el permiso) me solucionó el problema.
Me encontré con este problema cuando estaba ejecutando pruebas en un emulador con una imagen de sdcard nueva. Pude resolver el problema creando /sdcard/Pictures
con
new File("/sdcard/Pictures").mkdirs();