Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Android 11 (API 30) #36

Open
sgrimault opened this issue Apr 29, 2021 · 6 comments · Fixed by #40
Open

Support Android 11 (API 30) #36

sgrimault opened this issue Apr 29, 2021 · 6 comments · Fixed by #40
Labels
bug Something isn't working enhancement New feature or request

Comments

@sgrimault
Copy link
Collaborator

L'application de synchronisation n'est pas compatible avec la dernière version d'Android (11, API 30), notamment sur la synchronisation des données de paramétrage des applications ainsi que de la mise à jour des applications. La permission WRITE_EXTERNAL_STORAGE a été dépréciée au profit des nouvelles contraintes pour accéder aux données extérieures à l'application ("Scoped Storage").

  • La gestion de la mise à jour des données de paramétrages des applications devra être revue.
  • Le module de mise à jour des applications devra être revue.
@sgrimault sgrimault added bug Something isn't working enhancement New feature or request labels Apr 29, 2021
@sgrimault sgrimault linked a pull request Jul 28, 2021 that will close this issue
@camillemonchicourt
Copy link
Member

Normalement fonctionnel avec la version 1.3.0 de Sync-mobile, branchée à une version 2.7.5 de GeoNature. A tester, confirmer et fermer.

@DonovanMaillard
Copy link
Collaborator

Ok avec la 1.3.0 et GN 2.7.5 pour la synchronisation des données au moins. A voir lors des prochaines MAJ si problème mais pas de soucis à l'installation d'occtax depuis Sync en tous cas.

@DonovanMaillard
Copy link
Collaborator

Des nouvelles de Sébastien :

Quelques petites nouvelles concernant l'accès au répertoire des fonds de carte partagés sur un terminal sous Android 11.
J'ai testé l'approche où l'application demande à l'utilisateur la permission d'accéder au répertoire des fonds de carte en tenant compte de sa présence sur la carte mémoire externe ou non. L'avantage de cette solution est que l'application ne demande pas de permission supplémentaire, mais juste demander une fois à l'utilisateur son accord pour accéder au répertoire en question.
Le problème est que je n'accède pas directement aux fichiers présents dans le répertoire mais juste des "liens" sous forme d'URIs qui décrivent comment y accéder. La classe File a été marquée comme dépréciée sur Android 11 au profit de DocumentFile qui gère ce type d'accès selon les permissions accordées. On peut obtenir une instance de DocumentFile à partir d'une instance de File mais pas l'inverse (du moins si DocumentFile pointe sur un fichier qui se trouve en dehors de l'espace de stockage réservé à l'application, ce qui va être notre cas ici...). Le SDK Android ajoute tout un ensemble de classes permettant de faciliter l'accès aux fichiers via DocumentFile, la classe File étant amenée à disparaître.

La bibliothèque osmdroid utilisée par le module "maps" n'est pas encore à jour et ne supporte que la classe File... Donc actuellement, je suis un peu bloqué car même si la première partie est fonctionnelle (demande de permissions et accès au répertoire des fonds de carte), je ne peux pas charger ces fonds de carte via File et ensuite construire l'affichage des fonds de carte via la bibliothèque osmdroid.
Il y a des discussions en cours sur le github du projet osmdroid, notamment :

osmdroid/osmdroid#1591
osmdroid/osmdroid#1678
osmdroid/osmdroid#1700

Donc actuellement, je n'ai pas beaucoup options :

• Rester en l'état via le mode legacy pour l'accès au répertoire des fonds de carte (version 1.3.0 publiée dernièrement), en attendant que ça bouge un peu coté osmdroid. Sachant que cette solution (temporaire) reste fonctionnelle tant que l'application "Occtax" ne vise pas Android 11 et supérieur.
• Demander la permission d'accéder à l'intégralité de l'espace de stockage (MANAGE_EXTERNAL_STORAGE) qui requiert un consentement de l'utilisateur pour que l'application puisse accéder à tout...

A ce stade, Camille et moi privilégions le scénario où l'utilisateur autorise l'application à accéder à son stockage. Cette option permet une meilleure flexibilité dans le stockage et la mutualisation des fonds de cartes avec d'autres applications comme Orux Maps par exemple.

@camillemonchicourt
Copy link
Member

@sgrimault, les développements de la compatibilité sont ils terminés ?
De mémoire, il y avait une première version simple et temporaire pour avoir une solution fonctionnelle rapide.
Puis une deuxième version plus complète et pérenne. Celle-ci est-elle finalisée ?

@sgrimault
Copy link
Collaborator Author

@camillemonchicourt
Pour l'instant, seule l'application de synchronisation est complète et terminée avec un support complet sur Android 11.
Occtax ne cible pas explicitement Android 11 lié au problème de la gestion de l'accès aux fonds de carte et fonctionne donc en mode legacy pour l'accès à l'espace de stockage.
J'attends de voir comment ça bouge coté osmdroid.

@camillemonchicourt
Copy link
Member

OK merci pour ces précisions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants