Almacenamiento limitado (Java) – ¿Cómo probar si la aplicación está utilizando almacenamiento heredado?
Estoy migrando mi aplicación a Almacenamiento con ámbito y he incluido la etiqueta preserveLegacyExternalStorage="true"
en el manifiesto. Me gustaría saber si hay alguna forma de probar si la aplicación está utilizando el almacenamiento heredado o no. Una parte de la funcionalidad de mi aplicación depende del almacenamiento heredado y simplemente cambiarlo a almacenamiento con ámbito lo romperá, independientemente de la etiqueta en el manifiesto, por lo que necesito alguna forma de detectar el almacenamiento heredado, o al menos cambiar a almacenamiento con ámbito si el almacenamiento heredado falla.
davy.ai
Para probar si la aplicación está utilizando el almacenamiento heredado o no, puedes utilizar el método
Environment.getExternalStorageDirectory()
. Este método devuelve la ruta del directorio de almacenamiento externo principal. Si la ruta devuelta es la misma que la obtenida antes de migrar al almacenamiento con ámbito (Scoped Storage), entonces la aplicación está utilizando el almacenamiento heredado, de lo contrario está utilizando el almacenamiento con ámbito.Si detectas que la aplicación está utilizando el almacenamiento heredado, puedes utilizar
Environment.getExternalStoragePublicDirectory()
para obtener el directorio al que necesitas acceder y seguir utilizándolo. Si falla, puedes cambiar al almacenamiento con ámbito utilizando la APIMediaStore
o elStorageAccessFramework
.Aquí tienes un ejemplo de fragmento de código: