PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
13 stars 4 forks source link

Affichage des MBTiles sur Android 11 ? #136

Closed Adrien-Pajot closed 2 years ago

Adrien-Pajot commented 2 years ago

Version de l'application Version d'Occtax-mobile affectée par le bug : 2.0.0 Version de GeoNature utilisée : 2.8.1 & 2.9.1 & 2.9.2

Terminal et Version Android Marque et modèle du terminal : ? Version d'Android : 11

Description du bug et comportement attendu

Chargement des MBTiles en local impossible.

On suspecte un problème de droits d'accès de l'application aux fichiers. Quand le mobile était déjà en possession d'un OccTax-mobile, pas de souci. Quand from scratch sur Android 11, le problème apparait : carte grise.

Dans le fichier de log, est noté "Cannot read local tiles layer (suivi du nom du fichier)". On teste avec demo_scan.mbtiles.

Avez-vous un cas où ça marche sur Android 11 from scratch?

Merci

camillemonchicourt commented 2 years ago

Oui il y a eu des tickets concernant sur le fait qu'on a du revoir les permissions avec le passage en Android 11 qui limite beaucoup plus l'accès d'une application au stockage du terminal. Normalement au premier lancement, l'application nous invite à aller ajouter des permissions. C'est indiqué aussi dans la doc d'utilisation : https://github.com/PnX-SI/gn_mobile_occtax/blob/master/docs/utilisation-fr.adoc

On a déjà eu des retours que certains modèles ne proposent pas d'aller ajouter des permissions et qu'il faille aller le faire en allant dans les paramètres d'Android.

C'est ton cas ?

Adrien-Pajot commented 2 years ago

Dans notre cas, ça nous demande si on veut autoriser, on clique sur oui mais ça ne gère rien, on a l'impression que l'information est envoyée dans le vide ?

Nous sommes donc allés dans les paramètress: Paramètres > Application > Gestionnaire d'autorisations > Fichiers et contenu multimédia (ou stockage chez d'autres) > OccTax (Autoriser oui/non) Par défaut ne l'était pas dans notre cas, on essaie de le mettre mais ça n'enregistre pas. On ne sait pas si c'est dû à Android ou à OccTax-mobile.

Les personnes ayant eu à le faire manuellement ont leur problème résolu ?

Adrien-Pajot commented 2 years ago

Et quand on passe par Application > Toutes les Autorisations > Autorisation > Fichiers et contenu multimédia Il nous fait une liste de toutes les applications autorisées et celles non autorisées et on ne voit même pas OccTax-mobile. C'est pour ça qu'on suppose que cela n'enregistre pas.

Adrien-Pajot commented 2 years ago

On doute en fait de se souvenir que cela ait marché sur Android 11 tout court dans nos tests

gildeluermoz commented 2 years ago

Même si c'est pas une solution pérenne, essaie de mettre le mbtiles dans le répertoire de l'application. Comme ça tu verras si c'est un soucis de permissions d'accès au reste du stockage sur le terminal ou à la sdcard.

DonovanMaillard commented 2 years ago

Je vais demander à mon collegue de ttester. Nos vecteurs marchent et mon mbtile fonctionne sur A10

camillemonchicourt commented 2 years ago

Je viens de tester avec mon appareil en Android 11 en version 2.0.1 connecté sur le serveur de démo avec le fond demo_scan.mbtiles et tout a bien fonctionné. Le fond offline s'affiche bien.

Je ne trouve pas les autorisations dans les paramètres de l'appareil. De mémoire l'autorisation pour accéder au stockage m'avait été demandée la première fois que j'ai accédé à l'application ou à la partie carto de l'application, je ne me souviens plus bien.

Je ne vois pas de raison qu'il y ai un soucis sur la version 2.0 d'Occtax-mobile pour lequel cette partie n'a pas changé par rapport à la version 1.3, à ma connaissance.

Adrien-Pajot commented 2 years ago

Merci @camillemonchicourt , pour les autres je suis au preneur de vos retours d'expérience. On prend un autre type de mobile en exemple à 9:30, on vous tient au courant

PNPyrenees commented 2 years ago

Sous Android 11, nous avons les mbtiles qui fonctionne. Il à fallut activer "l'accès à tous les fichier" pour OccTax en passant par : Paramètre -> application -> Accès spécial (en touchant les trois points verticaux en haut à droite) ->Accès à tous les fichiers -> Occtax -> Accès auto. à tous les fichiers (https://github.com/PnX-SI/gn_mobile_occtax/blob/master/docs/installation-fr.adoc#3-installation-et-configuration-de-lapplication)

DonovanMaillard commented 2 years ago

Bonjour Adrien,

Vu à l'instant sur Android 11, certaines couches se chargent (du cache?), mais nos settings et certaines couchent se chargent mal, avec un soucis d'accès probablement 'cannot load' etc.

En allant voir les permissions de l'application, seul la localisation est autorisée, et rien 'nest refusé. Aucune mention du stockage.

à creuser pour régler ca, car on ne peut pas donner accès non plus au stockage...

AudreyEnGuyane commented 2 years ago

Bonjour à tous,

Pour ma part, j'essaie d'ajouter un mbtiles qui se charge au premier lancement de l'appli puis fait planter l'appli dès qu'on la relance. J'ai essayé de le mettre dans le "base_path": "/storage/emulated/0/Offline_maps" (donc un répertoire Offline_maps directement à la racine si je ne me trompe pas).

@PNPyrenees, où les avez vous placé? Quel paramètre "base_path" avez vous indiqué?

La config: Android11 Occtax Mobile 2.3.0.3070 Côté autorisations, j'ai bien un accès auto. à tous les fichiers.

PNPyrenees commented 2 years ago

Salut Audrey, Nous stockons les mbtiles dans un dossier à la racine de la carte SD externe. Depuis la version 2.0 d'OccTax, nous ne renseignons plus de base_path dans la configuration (https://geonature.pyrenees-parcnational.fr/geonature/api/gn_commons/t_mobile_apps)

Pour avoir plus d'explication, tu dois pouvoir récupérer des logs depuis ton smartphone en le branchant sur un pc dans le dossier Phone\Android\data\fr.geonature.occtax2\logs\

AudreyEnGuyane commented 2 years ago

Salut ! Lors de la tentative de redémarrage, le log s'arrête brutalement:

08:20:10.098 INFO: [fr.geonature.occtax.MainApplication] starting fr.geonature.occtax2... 08:20:10.099 INFO: [fr.geonature.occtax.MainApplication] logs directory: '/storage/emulated/0/Android/data/fr.geonature.occtax2/logs' 08:20:10.100 INFO: [fr.geonature.occtax.MainApplication] internal storage: 'MountPoint(mountPath=/storage/emulated/0, storageType=INTERNAL)' 08:20:10.101 INFO: [fr.geonature.occtax.MainApplication] external storage: 'null' 08:20:10.331 INFO: [fr.geonature.datasync.packageinfo.worker.CheckInputsToSynchronizeWorker] available inputs to synchronize: 0

Alors que le log précédent (avant bug):

08:19:39.540 INFO: [fr.geonature.occtax.MainApplication] starting fr.geonature.occtax2... 08:19:39.541 INFO: [fr.geonature.occtax.MainApplication] logs directory: '/storage/emulated/0/Android/data/fr.geonature.occtax2/logs' 08:19:39.542 INFO: [fr.geonature.occtax.MainApplication] internal storage: 'MountPoint(mountPath=/storage/emulated/0, storageType=INTERNAL)' 08:19:39.544 INFO: [fr.geonature.occtax.MainApplication] external storage: 'null' 08:19:39.745 ERROR: [fr.geonature.occtax.MainApplication$TinylogUncaughtExceptionHandler] java.lang.IllegalStateException: Expected a string but was NULL at android.util.JsonReader.nextString(JsonReader.java:410) at fr.geonature.datasync.auth.io.AuthLoginJsonReader.readAuthUser(AuthLoginJsonReader.kt:101) at fr.geonature.datasync.auth.io.AuthLoginJsonReader.readAuthLogin(AuthLoginJsonReader.kt:68) at fr.geonature.datasync.auth.io.AuthLoginJsonReader.read(AuthLoginJsonReader.kt:53) at fr.geonature.datasync.auth.io.AuthLoginJsonReader.read(AuthLoginJsonReader.kt:35) at fr.geonature.datasync.auth.AuthManagerImpl$getAuthLogin$2.invokeSuspend(AuthManagerImpl.kt:80) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

AudreyEnGuyane commented 2 years ago

Vu et résolu de mon côté: ce n'était pas un problème de donnée carto mais de compte utilisateur. cf. #184.

DonovanMaillard commented 2 years ago

Merci Audrey pour ce retour,

A voir si le ticket est toujours d'actualité ou s'il faut le fermer,

camillemonchicourt commented 2 years ago

A fermer selon moi, car il n'y a pas eu les retours d'@Adrien-Pajot, donc on peut imaginer que tout est bon de son côté.