2012-09-01 25 views
15

Tengo algún 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 MediaStore y devuelve el uri de la imagen. Sé que cuando falla por algún motivo, devolverá null en lugar de uri. Esta imagen ha sido descargada varias veces por muchas personas y de vez en cuando devolverá nulo a partir de 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 otro 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.Por qué Images.Media.insertImage return null

Después de eliminar mi tarjeta SD recibí este error, así que sé que podría ser un motivo, no estoy seguro, pero creo que también sucedería si la tarjeta estuviera llena. Todavía me preguntaba si podría haber otra razón también.

Respuesta

6

MediaStore.Images.Media.insertImage está accediendo al almacenamiento externo para guardar la imagen.

Algunos recordatorios importantes que podrían estar causando su aplicación falle:

  1. Una conexión USB bloqueará el uso de tarjetas SD si está en modo de almacenamiento masivo.

  2. Puede haber otros factores que pueden llevar a que una tarjeta SD sea inaccesible, así que asegúrese de que puede acceder primero a la tarjeta SD utilizando un explorador de archivos.

  3. Asegúrese de que sus permisos están configurados correctamente con android.permission.WRITE_EXTERNAL_STORAGE

publicar esto aquí para completar, ya que llegaba un nulo de insertImage, y la causa fue 1.

15

Parece suceder cuando no tiene un directorio/sdcard/DCIM/Camera en algunas versiones de Android. Crear este directorio (y tener el permiso) me solucionó el problema.

+3

Tuve que pasar esto también después de un reinicio del dispositivo. Al tomar una foto con la aplicación predeterminada de la cámara de Android creé la carpeta, después de lo cual pude insertar imágenes desde mi código. –

2

cuando tuve un problema tan i fijo con permisos añadiendo:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.read_external_storage" /> 
4

me encontré con este problema cuando estaba corriendo pruebas en un emulador de una imagen de la tarjeta sd fresco con. Yo era capaz de resolver el problema mediante la creación /sdcard/Pictures con

new File("/sdcard/Pictures").mkdirs();

1

que estaba ejecutando MediaStore.Images.Media.insertImage antes de obtener permiso del usuario para WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE que estaba causando un camino nula

Así que asegúrese de usuarios ha permitido el permiso y luego la imagen de la tienda