Un minuto fa ho posto la domanda a ChatGPT
Con Android 11 e versioni successive, l'approccio descritto nel 2020 (usare File.Combine(File.DirRootExternal, "Download") con il flag legacy e le autorizzazioni di scrittura) non è più affidabile.
Cosa è cambiato:
-
Scoped Storage: Android 11 introduce restrizioni più severe sull'accesso diretto ai file nelle cartelle esterne, inclusa la cartella Download. Questo significa che non puoi più accedere liberamente a tale cartella con i metodi tradizionali.
- Uso del SAF o MediaStore: Per gestire file nella cartella Download, dovrai utilizzare il [Storage Access Framework (SAF)](https://developer.android.com/guide/topics/providers/document-provider) oppure l'API MediaStore, che richiedono l'interazione con un'interfaccia di sistema per selezionare file o ottenere permessi specifici.
- Permesso MANAGE_EXTERNAL_STORAGE: In alcuni casi, per applicazioni che necessitano un accesso molto esteso ai file, esiste il permesso MANAGE_EXTERNAL_STORAGE. Tuttavia, questo permesso è soggetto a restrizioni più severe (e
richiede una giustificazione convincente per il Play Store) ed è pensato per applicazioni particolari come i file manager.
In sintesi:
Se sviluppi un'app B4A oggi e la tua app deve funzionare su dispositivi con Android 11 o superiore, non puoi più fare affidamento sul vecchio metodo per accedere direttamente alla cartella Download. Dovrai implementare soluzioni basate su SAF o MediaStore, oppure (con le dovute attenzioni) usare MANAGE_EXTERNAL_STORAGE se il tuo caso d'uso lo giustifica.
Quindi, la risposta è:
non in modo diretto come in passato; occorre adottare le nuove modalità previste dal sistema operativo.