My problem is that I want to be able to list the / sdcard getting all the files and files my current code worked for me but it stopped working (I do not know why it happened). But I have been investigating and I have found something related to a bad memory entry but my code works previously so there was not a bad entry, I talked about it about 3 days ago and today it does not work.
My code:
private List<String> listaNombresArchivos;
private List<String> listaRutasArchivos;
private ArrayAdapter<String> adaptador;
private String directorioRaiz;
private TextView carpetaActual;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
checkExternalStoragePermission();
Bundle ruta=getIntent().getExtras();
String ruta1=ruta.getString("rut");
ty=ruta.getString("mime");
carpetaActual = (TextView) findViewById(R.id.rutaActual);
directorioRaiz =ruta1;
verArchivosDirectorio(directorioRaiz);
}
private void verArchivosDirectorio(String rutaDirectorio) {
carpetaActual.setText("Estas en: " + rutaDirectorio);
listaNombresArchivos = new ArrayList<String>();
listaRutasArchivos = new ArrayList<String>();
File directorioActual = new File(rutaDirectorio);
File[] listaArchivos = directorioActual.listFiles();
int x = 0;
if (!rutaDirectorio.equals(directorioRaiz)) {
listaNombresArchivos.add("../");
listaRutasArchivos.add(directorioActual.getParent());
x = 1;
}
// Almacenamos las rutas de todos los archivos y carpetas del directorio
for (File archivo : listaArchivos) {
listaRutasArchivos.add(archivo.getPath());
}
// Ordenamos la lista de archivos para que se muestren en orden alfabetico
Collections.sort(listaRutasArchivos, String.CASE_INSENSITIVE_ORDER);
// Recorredos la lista de archivos ordenada para crear la lista de los nombres
// de los archivos que mostraremos en el listView
for (int i = x; i < listaRutasArchivos.size(); i++){
File archivo = new File(listaRutasArchivos.get(i));
if (archivo.isFile()) {
listaNombresArchivos.add(archivo.getName());
} else {
listaNombresArchivos.add("/" + archivo.getName());
}
}
// Si no hay ningun archivo en el directorio lo indicamos
if (listaArchivos.length < 1) {
listaNombresArchivos.add("No hay ningun archivo");
listaRutasArchivos.add(rutaDirectorio);
}
// Creamos el adaptador y le asignamos la lista de los nombres de los
// archivos y el layout para los elementos de la lista
adaptador = new ArrayAdapter<String>(this,
R.layout.text_view_lista_archivos, listaNombresArchivos);
setListAdapter(adaptador);
}
private void checkExternalStoragePermission() {
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
Log.i("Mensaje", "No se tiene permiso para leer.");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 225);
} else {
Log.i("Mensaje", "Se tiene permiso para leer!");
}
}
This code is responsible for listing a directory, for more information visit its home page: link
My LogCat:
04-20 20:09:33.943: I/dalvikvm(16382): #22 pc 00000dce
/system/bin/app_process
04-20 20:09:33.943: I/dalvikvm(16382): #23 pc 00016f4c
/system/lib/libc.so (__libc_init+35)
04-20 20:09:33.943: I/dalvikvm(16382): at java.io.File.listImpl(Native
Method)
04-20 20:09:33.943: I/dalvikvm(16382): at java.io.File.list(File.java:749)
04-20 20:09:33.943: I/dalvikvm(16382): at
java.io.File.listFiles(File.java:791)
04-20 20:09:33.953: I/dalvikvm(16382): at
com.example.virtualdiskmediaplayer.Main.verArchivosDirectorio(Main.java:82)
04-20 20:09:33.953: I/dalvikvm(16382): at
com.example.virtualdiskmediaplayer.Main.onCreate(Main.java:66)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.Activity.performCreate(Activity.java:5188)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2085)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2146)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.ActivityThread.access$700(ActivityThread.java:140)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.os.Handler.dispatchMessage(Handler.java:99)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.os.Looper.loop(Looper.java:137)
04-20 20:09:33.953: I/dalvikvm(16382): at
android.app.ActivityThread.main(ActivityThread.java:4944)
04-20 20:09:33.953: I/dalvikvm(16382): at
java.lang.reflect.Method.invokeNative(Native Method)
04-20 20:09:33.953: I/dalvikvm(16382): at
java.lang.reflect.Method.invoke(Method.java:511)
04-20 20:09:33.953: I/dalvikvm(16382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
04-20 20:09:33.953: I/dalvikvm(16382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
04-20 20:09:33.953: I/dalvikvm(16382): at dalvik.system.NativeStart.main(Native Method)
04-20 20:09:33.953: E/dalvikvm(16382): VM aborting
04-20 20:09:33.953: A/libc(16382): Fatal signal 11 (SIGSEGV) at 0xdeadd00d
(code=1), thread 16382 (diskmediaplayer)
If you know or notice something. I will be happy to hear your questions and comments. Thank you.