|
Problème de stockage des fichiers de l'application |
Started by Pascal BOULESTEIX, Jul., 20 2024 9:03 AM - 7 replies |
| |
| | | |
|
| |
Registered member 1,006 messages Popularité : +16 (20 votes) |
|
Posted on July, 20 2024 - 9:03 AM |
Salut à tous Je suis devant un problème. Quand mon application démarre en zone blanche, le dossier des fichiers de l'application n'est pas le bon ! En d'autres mots, dans l'init du projet, un des premières choses qui soit faite est de changer le dossier des fichiers de l'application par un
SI HChangeRep("*",gsRepDatas)=Faux ALORS Erreur("ERR50","Erreur HFSQL : " + HErreurInfo()) Trace ("myTrace : erreur HChangeRep >>"+HErreurInfo()) SINON Trace ("myTrace : après HChangeRep >>"+gsRepDatas) FIN
ce qui donne dans le logcat
myTrace : après HChangeRep >>/storage/emulated/0/Android/data/fr.saxrub.visiolittoral/files/Documents/fr.saxrub.wnat_mobile/Datas
que l'on soit en zone blanche ou pas, le hChangeRep ne génère pas d'erreur et pointe bien au bon endroit
Là ou ça se corse, c'est lors de la lecture d'un fichier HFSQL.
Dans le cas de Trace("myTRACE : gPROC_RETREIVE_USER_INFO 1")
HLitPremier(SESSION_PARAM)
Trace("myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM dossier ="+SESSION_PARAM..Répertoire) Trace("myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM nom sur disque ="+SESSION_PARAM..NomPhysique) Trace("myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM NbEnr="+HNbEnr(SESSION_PARAM))
SI HTrouve() = Vrai ALORS Trace("myTRACE : gPROC_RETREIVE_USER_INFO 2")
en zone pas blanche, on trouve retrouve bien dans le logcat le bon lieu de stockage des fichiers FHSQL et le contenu de SESSION_PARAM est correcte alors qu'en zone blanche, le chemin est différent et chose extraordinaire, SESSION_PARAM contient des données, qui sont vraisemblables mais fausses
Logcat "normal"myTRACE : gPROC_RETREIVE_USER_INFO 1 myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM dossier =/storage/emulated/0/Android/data/fr.saxrub.visiolittoral/files/Documents/fr.saxrub.wnat_mobile/Datas myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM nom sur disque =session_param myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM NbEnr=1 myTRACE : gPROC_RETREIVE_USER_INFO 2 myTRACE : gPROC_RETREIVE_USER_INFO 2 SESSION_PARAM ENUM ={ "SESSION_PARAM":{ "IDSESSION_PARAM":1, "ORGANISME":"Visiolittoral", "CODE_USER":2, "EMAIL":"Pascal.boulesteix@saxrub.fr", "KEEP_CONNECT":1, "IDTERRITOIRE":9, "IDLAST_CLASSE":11, "DATE_HEURE_AUTO":1, "LONG_LAT_AUTO":1, "LISTE_ESPECES":3, "INDICES_LISTE_COURTE":0, "NBR_USE":238, "WRITE_LOG":0= } }
Logcat zone blanchemyTRACE : gPROC_RETREIVE_USER_INFO 1 myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM dossier =/data/user/0/fr.saxrub.visiolittoral/databases myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM nom sur disque =session_param myTRACE : gPROC_RETREIVE_USER_INFO 1 SESSION_PARAM NbEnr=1 myTRACE : gPROC_RETREIVE_USER_INFO 2 myTRACE : gPROC_RETREIVE_USER_INFO 2 SESSION_PARAM ENUM ={ "SESSION_PARAM":{ "IDSESSION_PARAM":1, "ORGANISME":"Visiolittoral", "CODE_USER":2, "EMAIL":"Pascal.boulesteix@saxrub.fr", "KEEP_CONNECT":1, "IDTERRITOIRE":9, "IDLAST_CLASSE":0, "DATE_HEURE_AUTO":1 } } myTRACE : gPROC_RETREIVE_USER_INFO 3 1 myTRACE : gPROC_RETREIVE_USER_INFO 3 GPSSATELLITE
Question : pourquoi /storage/emulated/0/Android/data/fr.saxrub.visiolittoral/files/Documents/fr.saxrub.wnat_mobile/Datas est-il remplacé par /data/user/0/fr.saxrub.visiolittoral/databases ? Où puis-je trouver /data/user/0/fr.saxrub.visiolittoral/databases sur le téléphone ?
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | |
| |
Registered member 3,434 messages Popularité : +93 (137 votes) |
|
Posted on July, 20 2024 - 7:43 PM |
Salut C'est très bizarre ton histoire Mon application en wm25 ne fonctionne pas avec internet et je n'ai pas ce problème J'ai toujours mes données. Il faut dire que je n'utilise jamais HChangeRep Quel est ton code de remplissage de ta variable gsRepDatas Bien sûr si ton code change selon zone blanche ou pas merci de donner toutes les versions |
| |
| |
| | | |
|
| | |
| |
Registered member 1,006 messages Popularité : +16 (20 votes) |
|
Posted on July, 21 2024 - 10:39 AM |
Notez que l'utilisation de SysRepStockageExterne est une relique du temps ou on pouvez conserver les fichiers d'une installation à une autre et du stockage sur carte SD. Je pourrais simplifier aujourd'hui.
gnNumStockageExterne=1 Trace("myTrace fRepEnCours : "+fRepEnCours) gsRepRacine= SysRepStockageExterne (gnNumStockageExterne, sseAppDocument ) Trace("myTrace gsRepRacine : "+gsRepRacine) gsRepRacineApp= gsRepRacine+[fSep()]+"fr.saxrub.wnat_mobile"+[fSep()] Trace("myTrace gsRepRacineApp : "+gsRepRacineApp)
QUAND EXCEPTIONEXCEPTION DANS lnNumFichier = fOuvre( gsRepRacine+[fSep()]+"test_ecriture.txt",foCréation) fEcritLigne(lnNumFichier,sInfoRépertoire) fFerme(lnNumFichier) <Compile SI TypeConfiguration=Android> lnNumFichier = fOuvre( gsRepRacine+[fSep()]+"test_permission.txt",foCréation) POUR TOUT ÉLÉMENT Perm de PermissionListe() fEcritLigne(lnNumFichier,Perm.Nom+"/"+Perm.Description+"/"+Perm.Accordé) FIN fFerme(lnNumFichier) <FIN> FAIRE Info("ATTENTION REQUISE !","La vérification de l'autorisation de création et d'accès aux fichiers du téléphone a échoué !","","Veuillez désinstaller et réinstaller l'application et choisissez d'autoriser l'accès aux fichiers quand il sera demandé") RETOUR FIN
gsRepDatas= gsRepRacineApp+[fSep()]+"Datas"
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | |
| |
Registered member 3,434 messages Popularité : +93 (137 votes) |
|
Posted on July, 21 2024 - 1:48 PM |
Salut Dans ton code, je ne vois rien en rapport avec internet. Tout ce que je peux te dire c'est que /storage/emulated/0/Android/data/fr.saxrub.visiolittoral/files/Documents/ C'est le répertoire documents de ton application
Et /data/user/0/fr.saxrub.visiolittoral/databases C'est le répertoire des données utilisateur pour ton application
Tout les deux sont dans la mémoire interne Android et pas sur la SDCARD
En gros, je ne sais pas répondre à ta question. |
| |
| |
| | | |
|
| | |
| |
Registered member 369 messages |
|
Posted on July, 22 2024 - 3:29 PM |
Bonjour, Reprenons : il y a une différence entre présence d'internet qu'on appellera "mode connecté" ou pas d'internet, qu'on nommera "hors-connexion". Je suppose que tes traitements tiennent compte de l'un ou de l'autre cas. Lorsque tu es en mode "hors-connexion", est-ce que tu passes bien par le code :
gsRepRacine= SysRepStockageExterne (gnNumStockageExterne, sseAppDocument ) Trace("myTrace gsRepRacine : "+gsRepRacine) gsRepRacineApp= gsRepRacine+[fSep()]+"fr.saxrub.wnat_mobile"+[fSep()] Trace("myTrace gsRepRacineApp : "+gsRepRacineApp) De plus, parviens-tu à localiser tes 2 fichiers texte (test_ecriture.txt et test_permission.txt) ? Leur horodatage correspond-il au test en cours ? Leur emplacement est-il le bon ou en correspondance avec ce qu'indique les Trace() (/data/user/0/...) ?
Enfin, as-tu vérifié les propriétés du fichier de données, onglet "Détail", "Répertoire par défaut du fichier de données" ? |
| |
| |
| | | |
|
| | |
| |
Registered member 1,006 messages Popularité : +16 (20 votes) |
|
Posted on July, 24 2024 - 8:15 AM |
Bonjour 1 - en zone blanche on est en "mode connecté", l'internet est pourri mais il fonctionne. Si j'active le mode avion je n'ai pas de problème. 2 - qu'on soit "code connecté" ou pas, on passe bien sur le code indiqué 3 - quand ça fonctionne, si je regarde les fichiers textes, ils sont bien au bon endroit et au bon timestamp 4 - malheureusement, je ne sais pas accéder avec un explorateur au dossier /data/user/0/fr.saxrub.visiolittoral/databases : si vous avez une astuce, je prends (il semblerait que le lieu de stockage diffère selon les téléphones ; moi, j'utilise un samsung galaxy s24 android 14) 5 - dans l'analyse le dossier est "Répertoire de l'application"
S'il y a un volontaire, je peux organiser une visio pour une lecture critique du code de démarrage de mon projet. Me contacter en privé (email dans le playstore de mes applications)
-- Pascal Boulesteix Applications Visiolittoral et WNatMessage modified, July, 24 2024 - 8:22 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 369 messages |
|
Posted on July, 25 2024 - 12:36 PM |
Bonjour Pascal,
Peux-tu nous dire ce qu'affiche un Trace de SESSION_PARAM..Répertoire juste après le HChangeRep ? Puisqu'il ne s'agit pas d'une histoire de connexion, qu'est-ce qui te fait croire que c'est la qualité de la connexion qui détermine le changement de comportement ? Que donne un essai avec un autre appareil (en Android 14 aussi, ou en Android 9) ?
Sinon, Je suis remonté au début du sujet. Tu dis que tu fais ton HChangeRep (et donc ton SysRepStockageExterne) dans l'init du projet, ce qui m'étonne et voilà pourquoi. Si pour une raison ou pour une autre tu dois faire valider une permission de stockage à l'utilisateur, le dialogue risque d'être caché par ta première fenêtre. Depuis Android10(11?) ces histoires de stockage sont devenues contraignantes. J'ai moi-même été confronté à cette demande de permission qui était cachée (MANAGE_EXTERNAL_STORAGE). Ca vaut pour toutes les permissions qui doivent être demandées "manuellement". J'avais alors déménagé ces traitements (dont SysRepStockageExterne) dans la fin d'init de ma première fenêtre. Depuis tout va bien. N'y aurait-il pas qqc à fouiller de ce côté ? Autre chose : as-tu essayé d'insérer un SysEtatStockageExterne avant le SysRepStockageExterne ?
A bientôt ! |
| |
| |
| | | |
|
| | |
| |
Registered member 1,006 messages Popularité : +16 (20 votes) |
|
Posted on July, 25 2024 - 3:03 PM |
/storage/emulated/0/Android/data/fr.saxrub.visiolittoral/files/Documents/fr.saxrub.wnat_mobile/Datas est le répertoire, ce qui est normal. Le problème c'est que je n'ai pas de trace "après hchangeRep" (que j'ai ajouté récemment) quand ça plante ! Hier, j'ai fait des tests aux endroits (zones blanches) où je reproduisais le problème mais malheureusement, je n'y suis pas arrivé (hormis les traces que j'ai rajouté, le code et la cinématique d'initialisation n'ont pas été changés). Bref, je ne sais quoi dire à l'heure qu'il est. Tu parles de problème de connexion ; j'utilise du HFSQL classique et je ne fais pas de connexions explicites. Comme je le dis plus haut, tout ce qui tourne autour de SysRepStockageExterne est une relique du passé. Je vais simplifier tout ça. Si tu veux on fait une visio .
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | | | |
| | |
|