Android - Seleccionar directorios en la interna o externa. Android Studio

 
Vista:
Imágen de perfil de Sergio

Seleccionar directorios en la interna o externa. Android Studio

Publicado por Sergio (1 intervención) el 17/12/2016 15:28:28
Hola. Tengo un layout para elegir rutas en la interna y externa y que me la muestre en un EditText, (abre la opción de explorador de archivos para que el usuario elija el suyo y pueda navegar) cosa que consigo siempre y cuando el usuario seleccione un archivo dentro de ese directorio, al seleccionar el archivo, el programa le devuelve al layout para continuar y me pone la ruta en el EditText.
Esto no es exactamente lo que busco: quiero que al seleccionar el directorio, le devuelva al layout para continuar con la aplicación.
Este es el código para eso: (MainActivity).

1
2
3
4
5
6
et2 = (EditText) findViewById(R.id.editTextrutaOrigen);
int SELECCIONAR_DIRECTORIO_ORIGEN = 1;
Intent intentOrigen = new Intent(Intent.ACTION_GET_CONTENT);
intentOrigen.setType("*/storage");
startActivityForResult(intentOrigen, SELECCIONAR_DIRECTORIO_ORIGEN);
estadoBooleanOrigen = true;

Y un poco más abajo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (estadoBooleanOrigen) {
            estadoBooleanOrigen = false;
            String rutaOrigen = data.getData().getPath();
            et2.setText(rutaOrigen); // este ya me pone la ruta en el EditText, con nombre de archivo y extensión incluidos
        }
        if (estadoBooleanDestino) {
            estadoBooleanDestino = false;
            String rutaDestino = data.getData().getPath();
            et3.setText(rutaDestino);
        }
    }
}

Lo segundo: por más que miro webs e intento dar con ello, no consigo crear una carpeta ó directorio en la microSD. Ya puse los permisos correspondientes en AndroidManifest.xml
Código:
1
2
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

E incluso compruebo el estado de la microSD. Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
String state = Environment.getExternalStorageState();
 
if (Environment.MEDIA_MOUNTED.equals(state)) {
    mExternalStorageAvailable = mExternalStorageWriteable = true;
    Toast.makeText(getApplicationContext(), "se puede leer y escribir en la microSD", Toast.LENGTH_SHORT).show();
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    mExternalStorageAvailable = true;
    mExternalStorageWriteable = false;
    Toast.makeText(getApplicationContext(), "SÓLO ES POSIBLE leer la microSD", Toast.LENGTH_SHORT).show();
} else {
    mExternalStorageAvailable = mExternalStorageWriteable = false;
    Toast.makeText(getApplicationContext(), "NO SE PUEDE TRABAJAR CON LA microSD", Toast.LENGTH_SHORT).show();
}

Hasta ahora, lo único que he conseguido es que la carpeta se cree en la memoria interna. Incluso aún indicándole expresamente la ruta de la externa, no lo crea en la externa (microSD).
Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
Environment.getExternalStorageDirectory();
File folder = new File(Environment.getExternalStorageDirectory() + "/map");
boolean success = (new File("/storage/map")).mkdir();
if (!folder.exists()) {
    success = folder.mkdir();
}
if (success) {
    // Do something on success
} else {
    // Do something else on failure
}
 
break;

Me crea la carpeta map en /map de la interna (lógico), pero aún colocando /storage/.../ (que es de la externa).
Esto lo he puesto tanto en los dos sitios donde aparece ../map ó ...("/sstorage/map).

Dos dudas: si alguien pudiera responderme.
Gracias de antemano.
Saludos.
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

Seleccionar directorios en la interna o externa. Android Studio

Publicado por Tito (2 intervenciones) el 12/03/2018 07:04:07
Hola Sergio, soy nuevo en el entorno de programacion en Android me siento interesado en tu tema quisiera que me puedas dar ayudar con guias en un tema que tengo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar