Bonjour,
Personnellement, ce qui m'a fait peur, c'est ce message dans la console développeur :
Nous avons détecté l'indicateur requestLegacyExternalStorage dans le fichier manifeste d'un ou plusieurs des app bundles ou des APK de votre application.
Les développeurs dont les applications sont exécutées sur Android 11 ou version ultérieure doivent avoir recours à l'espace de stockage cloisonné pour que les utilisateurs puissent mieux contrôler l'accès à l'espace de stockage de leur appareil. À compter du 5 mai, pour proposer votre application sous Android 11 ou version ultérieure, vous devrez suivre l'une des procédures ci-dessous :
- Mettre à jour votre application afin de suivre des bonnes pratiques plus respectueuses de la confidentialité, par exemple grâce aux API Storage Access Framework ou Media Store
- Mettre à jour votre application pour déclarer l'autorisation d'accès à tous les fichiers (MANAGE_EXTERNAL_STORAGE) dans le fichier manifeste, et remplir la déclaration d'autorisation d'accès à tous les fichiers dans la Play Console à partir du 5 mai
- Supprimer l'autorisation d'accès à tous les fichiers de votre application
Pour les applications ciblant Android 11, l'indicateur requestLegacyExternalStorage sera ignoré. Vous devez utiliser l'autorisation d'accès à tous les fichiers pour conserver un accès étendu.
Les applications qui demandent d'accéder à l'autorisation d'accès à tous les fichiers alors que cela ne leur est pas permis seront supprimées de Google Play, et vous ne pourrez pas les mettre à jour.
Comme dit plus haut, je n'utilise File.DirRootExternal que pour avoir accès au dossier "osmdroid" de la racine de l'appareil, mais si je ne peux plus l'utiliser, mon application ne fonctionnera plus...
Pour le moment pour les permissions de lecture/écriture de ce dossier, j'utilise :
rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
If Result = False Then
ToastMessageShow("Pas de permission d'écriture en mémoire...", False)
End If
rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
If Result = False Then
ToastMessageShow("Pas de permission de lecture de la mémoire...", False)
End If
et dans le manifest :
AddPermission(android.permission.READ_EXTERNAL_STORAGE)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
mais je crains qu'à partir du 5 Mai Google bloque mon application à cause de cela ?
Pour l'heure, je cible targetSdkVersion="29", et j'ai enlevé requestLegacyExternalStorage du manifest et ça fonctionne, mais à l'avenir, j'imagine que je vais devoir passer à targetSdkVersion="30" pour Android 11, et là je n'ai pas de solution...
La solution idéale serait qu'OSMDroid puisse utiliser un dossier différent dans file.DirInternal, mais ça je ne sais pas faire...