¿Por qué Android crea "Carpetas Shell" automáticamente? ¿Puedo cambiar las carpetas de shell?

Android crea automáticamente estas carpetas en el almacenamiento principal:

Alarms
DCIM
Documents
Download
Movie
Music
Notifications
Pictures
Podcasts
Ringtones

Son las "Carpetas de shell de usuario" predeterminadas de Android (USF es un concepto de Windows ). Apenas hay documentos o discusiones en Internet. La mayoría de las discusiones son sobre MediaProvider (y Media Scanner).

¿Existe algo así como una "clave de registro" que controle estas carpetas? ¿Puedo cambiar la ubicación predeterminada y el nombre de ellos?

Respuestas (1)

La clave de registro es un concepto de Windows en Android, estas ubicaciones se manejan de la siguiente manera

/**
 * Standard directory in which to place files that have been downloaded by
 * the user.  Note that this is primarily a convention for the top-level
 * public directory, you are free to download files anywhere in your own
 * private directories.  Also note that though the constant here is
 * named DIRECTORY_DOWNLOADS (plural), the actual file name is non-plural for
 * backwards compatibility reasons.
 */
public static String DIRECTORY_DOWNLOADS = "Download";

Este fragmento de código se extrae deandroid / platform / frameworks / base / android-<version-tag> / . / core / java / android / os / Environment.java

Entonces, como puede ver, esto devuelve una cadena estática codificada y no pude encontrar ninguna función para cambiarla en el código AOSP. Por lo tanto, no puede cambiar esta ubicación para todas las aplicaciones a menos que modifique el código fuente y cree su propia ROM personalizada. Para su aplicación, obviamente, también puede descargarla en su carpeta privada.

Pero algunos OEM habían proporcionado esta capacidad en su rom. Mira esto .

Una solución alternativa para hacerlo con la carpeta de descargas es descargar un administrador de descargas de terceros, como el administrador de archivos ES . Le pedirá que elija la ubicación de descarga para el archivo.

Bien. Pensé que habría algo como /system/etc/usf.conflo que hacen los sistemas Unix.