PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Erreur ftprécupère (filezilla--> android)
Erreur ftprécupère (filezilla--> android)
Débuté par Fred, 09 juil. 2019 15:30 - 2 réponses
Posté le 09 juillet 2019 - 15:30
Bonjour,

J'ai développé plusieurs applications Android pour nos besoins professionnels. La gestion des mises à jour devient maintenant contraignante.
Je me suis donc orienté vers un serveur FTP en mettant une petite procédure en place au démarrage de l'application. La voici :

SAI_Resultat = ""
Date_FTP,Date_Local sont des Dates
Heure_FTP,Heure_Local sont des Heures
IDftp est un entier = FTPConnecte("192.168.10.24","android","android")
SAI_Resultat = "ID FTP : " + IDftp
Multitâche(100)
SI IDftp <> -1
SI fFichierExiste("/storage/emulated/0/MAJ/Test.apk") = Faux ALORS
SAI_Resultat = SAI_Resultat + RC + "Récup du fichier si absent local"
Multitâche(100)
Date_FTP = FTPDate(IDftp, "/Test.apk")
Heure_FTP = FTPHeure(IDftp, "/Test.apk")
SAI_Resultat = SAI_Resultat + RC + "FTP " + DateVersChaîne(Date_FTP,"JJ/MM/AAAA") + "-" + HeureVersChaîne(Heure_FTP,"HH:mm")

Multitâche(100)

SI FTPRécupère(IDftp, "/Test.apk", "/storage/emulated/0/MAJ/") = Vrai ALORS
SAI_Resultat = SAI_Resultat + RC + "Fichier transféré"
Multitâche(100)
SINON
SAI_Resultat = SAI_Resultat + RC + "Echec transfert"
SAI_Resultat = SAI_Resultat + RC + ErreurInfo(errComplet)
Multitâche(100)
FTPDéconnecte(IDftp)
RETOUR
FIN
SINON
Date_FTP = FTPDate(IDftp, "/Test.apk")
Heure_FTP = FTPHeure(IDftp, "/Test.apk")
Date_Local = fDate("/storage/emulated/0/MAJ/Test.apk")
Heure_Local = fHeure("/storage/emulated/0/MAJ/Test.apk")
SI Date_FTP > Date_Local OU ( Date_FTP = Date_Local ET Heure_FTP > Heure_Local ) ALORS // Si Date sur FTP est plus recente que date Local OU heure FTP est plus récente que date Local.
SAI_Resultat = SAI_Resultat + RC + "Proc màj"
Multitâche(100)
fSupprime("/storage/emulated/0/MAJ/Test.apk")
FTPRécupère(IDftp, "/Test.apk", "/storage/emulated/0/MAJ/")
ShellExecute("/storage/emulated/0/MAJ/Test.apk") // Lancement installation
SINON
SAI_Resultat = SAI_Resultat + RC + "L'application est à jour."
FIN
FIN
SINON
SAI_Resultat = SAI_Resultat + RC + "Impossible de ce connecter au serveur FTP"
FIN
FTPDéconnecte(IDftp)


En test sur Windows, c'est parfait.

Mais sur l'Android mon résultat est toujours "Échec transfert" alors que du côté FTP (Filezilla), le retour est "transfer OK".

Le message d'erreur est : "Impossible de créer le fichier </storage/emulated/0/MAJ/> ou de l'ouvrir en écriture"

Peut-on écrire sur un Android ? Faut-il absolument rooter le phone pour modifier les droits sur le dossier de réception ?

C'est un code que j'ai déjà utilisé avec succès sur Android.

Comment mettre des Android à jour sans passer par le Google Store ?

Je vais faire avec du http...

Merci d'avance pour l'aide que vous pourrez m'apporter.

Cordialement,

Fred
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 10 juillet 2019 - 00:16
Posté le 10 juillet 2019 - 12:18
Salut,

Voici le code qui fonctionne :
SAI_Resultat = ""

sRep est une chaîne = "/mnt/sdcard/Download/"

Date_FTP,Date_Local sont des Dates
Heure_FTP,Heure_Local sont des Heures

SI fFichierExiste(sRep + "MAJ") = Faux ALORS
SI fRepCrée(sRep + "MAJ") = Vrai ALORS
SAI_Resultat = SAI_Resultat + RC + "Rep MAJ créé"
SINON
SAI_Resultat = SAI_Resultat + RC + "Rep MAJ non créé"
FIN
SINON
SAI_Resultat = SAI_Resultat + RC + "Rep MAJ existe déjà"
FIN

IDftp est un entier = FTPConnecte("192.168.10.24","android","android")
SAI_Resultat = SAI_Resultat + RC + "ID FTP : " + IDftp

SI IDftp <> -1
SI fFichierExiste(sRep + "MAJ/Test.apk") = Faux ALORS
SAI_Resultat = SAI_Resultat + RC + "Récup du fichier si absent local"

Date_FTP = FTPDate(IDftp, "/Test.apk")
Heure_FTP = FTPHeure(IDftp, "/Test.apk")
SAI_Resultat = SAI_Resultat + RC + "FTP " + DateVersChaîne(Date_FTP,"JJ/MM/AAAA") + "-" + HeureVersChaîne(Heure_FTP,"HH:mm")

SI FTPRécupère(IDftp, "/Test.apk", sRep + "MAJ/") = Vrai ALORS
SAI_Resultat = SAI_Resultat + RC + "Fichier transféré"
SINON
SAI_Resultat = SAI_Resultat + RC + "Echec transfert"
SAI_Resultat = SAI_Resultat + RC + ErreurInfo(errComplet)
FTPDéconnecte(IDftp)
RETOUR
FIN
SINON
Date_FTP = FTPDate(IDftp, "/Test.apk")
Heure_FTP = FTPHeure(IDftp, "/Test.apk")
Date_Local = fDate(sRep + "MAJ/Test.apk")
Heure_Local = fHeure(sRep + "MAJ/Test.apk")
SI Date_FTP > Date_Local OU ( Date_FTP = Date_Local ET Heure_FTP > Heure_Local ) ALORS
SAI_Resultat = SAI_Resultat + RC + "Proc màj"
fSupprime(sRep + "MAJ/Test.apk")
FTPRécupère(IDftp, "/Test.apk", sRep + "MAJ/")
ShellExecute(sRep + "MAJ/Test.apk") // Lancement installation
SINON
SAI_Resultat = SAI_Resultat + RC + "L'application est à jour."
FIN
FIN
SINON
SAI_Resultat = SAI_Resultat + RC + "Impossible de ce connecter au serveur FTP"
FIN
FTPDéconnecte(IDftp)


J'ai également ajouté les permissions RW sur la sd comme conseillé.

Cela reste un peu pénible parce qu'il faut ajouter une sdcard dans les phone. Je vais tester avec le répertoire "download" du système.

Penser également à autoriser les sources inconnues.

Merci pour les conseils.

Fred