Tengo un problema con un listview que muestra archivos de la sd, me salta un nullPointerException y un "attempt to get length of null array", en negrita es la linea donde me salta el error, con emuladores de 4.0 , 4.1, 4.2 funciona correctamente, me guarda los archivos, los lista bien, los lee, borrar etc pero con 4.3, 5.0, 6.0 peta y da forzar cierre. Sacado de
este post.
Código:
public ArrayList<File> FindSongs(File root) {
ArrayList<File> al = new ArrayList<File>();
File[] files = direc.listFiles();
for (File singleFile : files) {
if (singleFile.isDirectory() && !singleFile.isHidden()) {
al.addAll(FindSongs(singleFile));
} else {
if (singleFile.getName().endsWith(extension)
) {
al.add(singleFile);
}
}
}
return al;
}
Aqui creo el directorio si no existe, en los emuladores de 5.0 me falla alcrear el directorio en la SD, pero en 4.1 por ejemplo funciona correctamente la aplicacion.
Código:
private String Path = "la ruta de la sd ...";
private File direc = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + Path);
public void crearDirectorio() {
try {
Log.d("Starting", "Checkeando directorio /App/Audios/");
if (!direc.exists()) {
if (!direc.mkdir()) {
Log.e("Fallo al crear directorio",
direc.toString());
} else {
Log.i("Creacion del directorio", "Ok");
}
}
} catch (Exception ex) {
Log.e("Creacion del directorio", ex.getMessage());
}
}