¿Hay una simple llamada a la API que me diga si una aplicación que se ejecuta en Android 10 o posterior debe usar el acceso de Scoped Storage, es decir, si el acceso normal a los archivos, también conocido como "Legacy External Storage" está desactivado? Tenga en cuenta que incluso si la aplicación en AndroidManifest.xml, la sección declara:
android:requestLegacyExternalStorage="true"
el acceso al archivo aún puede denegarse debido a cambios en la política de Google en el futuro, por lo que probar este valor es inútil. La única forma que encontré es probar si el directorio raíz de almacenamiento externo es legible, pero para eso, la aplicación primero debe solicitar permiso de almacenamiento, que es inútil para cualquier otra cosa, si el almacenamiento heredado está deshabilitado.
public static boolean mustUseScopedStorage() {
// Impractical must first ask for useless Storage permission...
File exSD = Environment.getExternalStorageDirectory();
return !exSD.canRead(); // this test works only if Storage permission was granted.
}
Creo que una vez vi una nueva API para detectar esto, pero ya no puedo encontrar ese artículo ...
an app running on Android 10 or later must use Scoped Storage access
? ¿Puedes explicar a qué te refieres con eso? ¿Qué funciones tienes en mente? Sé que, por ejemplo, Storage Volumes y Storage Manager que se trajeron para N ya están en desuso para Q.