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.
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.
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


0