Error when trying to list / sdcard?

0

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.

    
asked by Abraham.P 21.04.2017 в 02:18
source

0 answers