Esiste una semplice chiamata API che mi direbbe se un'app in esecuzione su Android 10 o versioni successive deve utilizzare l'accesso alla memorizzazione con ambito, ovvero se il normale accesso ai file, noto anche come "Memoria esterna legacy" è disabilitato? Si noti che anche se l'app in AndroidManifest.xml, la sezione ha dichiarato:
android:requestLegacyExternalStorage="true"
l'accesso al file potrebbe ancora essere negato a causa di modifiche delle norme di Google in futuro, quindi testare questo valore è inutile. L'unico modo che ho trovato è verificare se la directory principale di archiviazione esterna è leggibile, ma l'app deve prima richiedere l'autorizzazione di archiviazione, che è inutile per qualsiasi altra cosa, se l'archiviazione legacy è disabilitata.
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.
}
Penso di aver visto una volta una nuova API per rilevarlo, ma non riesco più a trovare quell'articolo ...
an app running on Android 10 or later must use Scoped Storage access? Puoi spiegarci cosa intendi con quello? Quali funzioni hai in mente? So che ad esempio i volumi di archiviazione e il gestore archiviazione che sono stati portati per N sono già