Entiendo que ExternalFiles se utilizará en API 8 en adelante y getExternalStorageDirectory es para 7 y menos. Sin embargo, estoy un poco confundido entre el uso. Por ejemplo, quería comprobar que existe una carpeta y anteriormente usarías algo como:
File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");
Sin embargo, cada ejemplo que veo dice que use getExternalFilesDir (null), File.ext. Como estoy por encima de la API 8, quiero usar este método, pero ¿cómo puedo buscar una carpeta? Verificaré la existencia de archivos en otro punto, pero por ahora solo quiero ver si existen las carpetas.
getExternalStorageDirectory()
no no necesariamente - tal vez incluso no suele - devolver el "camino a la tarjeta SD." En su lugar, devuelve el "directorio de almacenamiento externo primario". Los documentos ( developer.android.com/reference/android/os/… ) dicen:En primer lugar, debemos comprender cuál es la diferencia entre almacenamiento interno, almacenamiento externo (también conocido como almacenamiento externo primario) y almacenamiento externo secundario.
Almacenamiento interno: es el almacenamiento al que el usuario no puede acceder, excepto a través de aplicaciones instaladas (o al rootear su dispositivo). Ejemplo: data / data / app_packageName
Almacenamiento externo primario: almacenamiento compartido integrado al que "el usuario puede acceder conectando un cable USB y montándolo como una unidad en una computadora host". Ejemplo: cuando decimos Nexus 5 32 GB.
Almacenamiento externo secundario: almacenamiento extraíble. Ejemplo: tarjeta SD.
Devuelve la ruta a la carpeta de archivos dentro de Android / data / data / your_package / en el almacenamiento externo primario. Que es almacenamiento incorporado.
Devolverá la ruta del directorio de almacenamiento externo secundario
fuente
File getExternalStoragePublicDirectory (String type)
yFile getFilesDir ()
también! ACTUALIZACIÓN IMPORTANTE !para quien se encuentre con esta pregunta.
Como se trata de una pregunta algo antigua, solo quería proporcionar información adicional. Dado que KitKat, incluso las aplicaciones que tienen permiso WRITE_EXTERNAL_STORAGE solo pueden escribir en Android / data / data / your_package / en almacenamiento externo, también conocido como
getExternalFilesDir()
Si intenta escribir
getExternalStorageDirectory() + "/somefolder/anotherfolder/"
, obtendrá una SecurityException en la mayoría de los dispositivosfuente
!! IMPORTANTE !!
Environment.getExternalStorageDirectory()
está en desuso y debe usarse Context # getExternalFilesDir (String), MediaStore o Intent # ACTION_OPEN_DOCUMENT.https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory ()
También a partir de Android.M, los desarrolladores deben solicitar permisos en tiempo de ejecución.
Vea más detalles en la documentación aquí y esta pregunta
Environment.getExternalStorageDirectory () obsoleto en API nivel 29 java
fuente