PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → hcreationsiinexistant erreur 70152 Android 11
hcreationsiinexistant erreur 70152 Android 11
Started by Emmanuel MILLOT, Jul., 05 2022 7:18 PM - 8 replies
Posted on July, 05 2022 - 7:18 PM
bonjour a tous, je possède Windev mobile 27 et déploie mon appli sur une tablette Samsung Galaxy Tab A (SM-T510).
le code ci-dessous se trouve dans le code du projet. Mon appli se ferme direct sur la tablette et mes fichiers ne se mettent pas à jour. Ceci vient de la fonction HCréationSiInexistant qui me renvoie le code d'erreur 70152 (Problème de droits) et du coup il me ferme le programme en me mettant qu'il ne parvient pas à accèder aux fichiers. Je ne comprends pas puisque justement maintenant depuis windows 10 et 11, j'ai modifié mon code pour enregistrer mes fichiers dans le dossier public (j'ai besoin d'y accèder à partir d'un client FTP). Qui pourra m'expliquer ou est le problème et ce que je dois faire pour remédier au problème ?
Merci d'avance et bon codage :merci:
33
chemin_data_android est une chaîne

////// Stockage des fichiers de l'application dans le dossier public "Documents"////////

//On stocke les données en stockage externe pour pouvoir y accéder depuis l’extérieur (en FTP notamment)
SI SysEtatStockageExterne(1) = sseDisponible ALORS
chemin_data_android = SysRepStockageExterne(1,ssePublicDocument)
SINON
Erreur("Stockage externe (1) non disponible !")
FinProgramme()
FIN

SI fRepExiste(chemin_data_android+fSep()+"Appli") = Faux ALORS
SI PAS fRepCrée(chemin_data_android+fSep()+"Appli") ALORS Erreur(ErreurInfo(errMessage))
FIN

chemin_data_android = chemin_data_android+fSep()+"Appli"


HChangeRep("*",chemin_data_android)

LOCAL
sListeDesErreurs est une chaîne
liste_fichiers est une chaîne = "camion"+RC+"chauffeur"+RC

HVérifieStructure("*", hIdentique)
// Pour tous les fichiers
POUR TOUTE chaîne sNomUnFichier de liste_fichiers SEPAREE PAR RC
QUAND EXCEPTIONEXCEPTION DANS
// Ouverture ou création du fichier de données
HCréationSiInexistant(sNomUnFichier)
FAIRE
// Problème
// Il y a une différence de structure ?
SI HErreur(hErrEnCours) = 70016 ALORS
// Erreur 70016: LE FICHIER NE CORRESPOND PAS A SA DESCRIPTION
// On met à jour la structure du fichier
SI PAS HModifieStructure(sNomUnFichier) ALORS
// Echec de la mise à jour de la structure du fichier
sListeDesErreurs += [RC] + ...
"- Erreur de modification de structure pour le fichier <" + ...
sNomUnFichier + "> : " + HErreurInfo()
FIN
SINON
sListeDesErreurs = HErreur(hErrEnCours)
// Autres erreurs qu'une différence de structure
sListeDesErreurs = HErreur(hErrEnCours)
sListeDesErreurs += [RC] + "- Erreur d'accès au fichier <" + ...
sNomUnFichier + "> : " + HErreurInfo()
FIN
FIN
FIN

// Il y a eu des erreurs ?
SI sListeDesErreurs <> "" ALORS
Erreur("Erreur à l'ouverture des fichiers de données !"+RC+sListeDesErreurs)
FinProgramme()
FIN
Registered member
3,342 messages
Popularité : +93 (137 votes)
Posted on July, 05 2022 - 10:28 PM
Salut Emmanuel,
Même si tu mets tes fichiers dans un emplacement public
Il faut quand même demander l'autorisation à l'utilisateur
https://doc.pcsoft.fr/fr-FR/?1410087423&name=permissiondemande_fonction
Registered member
14 messages
Posted on July, 06 2022 - 9:20 AM
Je me suis trompé dans mon message, je voulais dire "depuis android 10 et 11" bien sûr et non pas windows.
OK Popoy j'en prends bonne note mais je viens de m'apercevoir que le même code en windev mobile 26 fonctionne très bien, en fait le souci apparait depuis que j'ai migré mon projet en version 27...

Par ailleurs, je ne suis pas sûr d'avoir à demander la permission à l'utilisateur pour ça, il est indiqué dans la doc :

Il n'est pas nécessaire d'appeler la fonction PermissionDemande pour les permissions dites "normales" (par opposition aux permissions dites "dangereuses") car elles sont automatiquement accordées dès l'installation de l'application à partir du moment où elles ont été déclarées dans le manifeste de l'application.
Pour les permissions dites "dangereuses" (accès à la positon de l'appareil, à la caméra, au micro, etc), le framework Android se charge automatiquement d'effectuer la demande de permission à l'utilisateur lors de l'utilisation de la fonctionnalité correspondante. La fonction PermissionDemande peut toutefois être utilisée dans les cas par exemple où l'on souhaite afficher un message informatif à l'utilisateur avant d'effectuer une demande de permission.
Message modified, July, 06 2022 - 9:44 AM
Registered member
796 messages
Popularité : +40 (42 votes)
Posted on July, 06 2022 - 12:16 PM
Bonjour, juste une idée, mais essayez de supprimer le dernier RC de la ligne.
liste_fichiers est une chaîne = "camion "+RC+"chauffeur "+RC

Je pense que dans la boucle, la dernière chaîne renvoyée est une chaîne vide, qui n'est pas un nom de fichier valide.

Rubén
Registered member
14 messages
Posted on July, 06 2022 - 2:07 PM
Merci pour votre aide Rubén mais ça n'a absolument rien a voir...
Registered member
14 messages
Posted on July, 07 2022 - 10:21 AM
Alors je crois que j'ai enfin réussi, pour ceux que ça intéresse, voilà ce que j'ai fait :

1) dans le code d'initialisation de mon projet, j'ai rajouté le code suivant :
perm est une Permission = PermissionListe(permGestionStockageExterne)
SI PAS perm.Accordé ALORS
PermissionDemande(perm,procdemandepermission)

PROCEDURE INTERNE procdemandepermission

FIN
FIN


2) Lors de la génération de l'application, dans les permissions j'ai rajouté "android.permission.MANAGE_EXTERNAL_STORAGE"
Registered member
3,342 messages
Popularité : +93 (137 votes)
Posted on July, 07 2022 - 11:54 AM
Content de t'avoir aidé.
Registered member
14 messages
Posted on July, 07 2022 - 2:18 PM
oui merci à toi Popoy, par contre ce que j'ai pas compris c'est que sur la même tablette en android 11, je n'avais pas besoin de faire ça en WM26 alors que en WM27, ça ne passait plus
Registered member
3,342 messages
Popularité : +93 (137 votes)
Posted on July, 07 2022 - 3:04 PM
Dans WM <=26 il y avait un code de demande de permission
Quand on accédait au stockage
Mais vu que pcsoft a rajouter la nouvelle fonction
Il faut la rajouter
Nb version minimum 26 (rajouter dans les dernières update)
D'où doublon donc supprimer
A vérifié auprès du support