Android - No se puede leer archivo txt/csv en una carpeta en la memoria SD

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 62 puestos en Android (en relación al último mes)
Gráfica de Android

No se puede leer archivo txt/csv en una carpeta en la memoria SD

Publicado por Rafael (1 intervención) el 22/03/2019 06:52:13
Saludos expertos,

espero alguien me pueda ayudar pronto con este problema que tengo, ya que tengo varios dias dandole cabeza y no le veo la razon del fallo.
tengo un codigo sencillo que lo que hace es abrir un lista de archivos dentro de una carperta para luego seleccionar el archivo. El problema es que por ningun lado he logrado leer los archivos o carpetas de la SD.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
public class MainActivity extends AppCompatActivity {
 
    private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 0;
    private List<String> item = null;
    private Context thisActivity;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //-------------permisos-----------------//
 
        int permissionCheck = ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE);
 
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_CONTACTS)
                != PackageManager.PERMISSION_GRANTED) {
 
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.READ_CONTACTS)) {
 
            } else {
 
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        MY_PERMISSIONS_REQUEST_READ_CONTACTS);
            }
        }
        //----------------------------------------//
 
        Button cargar = (Button)findViewById(R.id.btn_archivo);
 
        cargar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                leer_archivo();
            }
        });
    }
 
    private void leer_archivo() {
        ListView listdo = (ListView)findViewById(R.id.datos_carpeta);
 
        item = new ArrayList<String>();
 
        File f = new File(Environment.getExternalStorageDirectory() + "/archivo/");
        File[] files = f.listFiles();
 
        Toast.makeText(getApplicationContext(), String.valueOf(files.length), Toast.LENGTH_SHORT).show();
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            if (file.isDirectory())
                item.add(file.getName() + "/");
            else
                item.add(file.getName());
        }
        TextView ruta = (TextView) findViewById(R.id.ruta);
        ruta.setText(Environment.getExternalStoragePublicDirectory("/archivo/") + "Reparto Flete 1.txt");
 
        ListView lstOpciones = (ListView) findViewById(R.id.datos_carpeta);
        ArrayAdapter<String> fileList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, item);
        lstOpciones.setAdapter(fileList);
 
        lstOpciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position,   long id) {
                Intent data = new Intent();
                data.putExtra("filename", item.get(position));
                setResult(RESULT_OK, data);
                finish();
            }
        });
    }
 
    ////////-------------------------------------------//////////
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(getApplicationContext(), "Permiso concedido", Toast.LENGTH_LONG).show();
 
                } else {
                    Toast.makeText(getApplicationContext(), "Permiso denegado", Toast.LENGTH_LONG).show();
                }
                return;
            }
        }
    }
}

como se puede ver le he agregado hasta una solicitud de permiso para leer la memoria pero nada... siempre me dice que en el for donde esta el file.length es null por lo que no veo que este leyendo la memoria.
si busco con el buscador de archivos de mi android si logro ver la carperta, el archivo y hasta abrirlo..
alguien puede ayudarme con esto?
gracias de ante mano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder