Bonjour
j'ouvre cette conversation car j'ai fait beaucoup de recherche pour trouver un exemple pour gérer l'équivalent du LiveUpdate avec des applications Android développées en WinDev Mobile sur un réseau Local
Je n'ai pas trouvé de solution qui compare directement la version de la distribution (fichier apk) et du programme installé alors que c'est ce que je souhaitai faire, je ne voulais pas gérer les numéros de version en parallèle de Windev
J'ai trouvé une solution qui n'est pas satisfaisante à 100% mais à le mérite de fonctionner, son principal défaut étant qu'elle télécharge la distribution à chaque lancement, mais dans mon cas sur un réseau local en Wifi, cela est supportable
l'idée de ce post est que vous puissiez rebondir sur ma solution et pourquoi pas l'améliorer ...
J'ai installé un serveur FTP en local et le principe est le suivant, au lancement de mon application Android, le programme télécharge la distribution présente sur le serveur compare les versions et si il y a différence installe la nouvelle version
j'utilise pour cela une procédure WinDev et qui appelle une procédure Java
Voilà le code WinDev au lancement :
et la procédure Globale en Java, pour la créer, créez une procédure globale normale et cliquez sur le logo WL à gauche de sa barre de titre pour transformer en code Java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 nfic, FicLocal,NumVersion est une chaîne IDCOnnexion est un entier nfic="TestAndroid.apk" FicLocal=ComplèteRep(SysCacheStockageExterne(1))+nfic IDCOnnexion=FTPConnecte("10.1.2.41/Android") SI IDCOnnexion>-1 ALORS SI fFichierExiste(FicLocal) ALORS SI PAS fSupprime(FicLocal) ALORS Erreur("Erreur Suppression ancienne archive") FIN FIN SI FTPRécupère(IDCOnnexion,nfic,FicLocal) ALORS FTPDéconnecte(IDCOnnexion) // Info("Transfert OK "+nfic+" vers "+FicLocal,"Test de la version") SI fFichierExiste(FicLocal) ALORS NumVersion=TestVersionAPK(FicLocal) // Info(NumVersion) SI NumVersion<>"0.0.0.0" et NumVersion<>ExeInfo(exeVersion) ALORS Info("Une nouvelle version est disponible et va être installée","Suivez les instructions pour réaliser l'installation") LanceAppliAssociée(FicLocal) Multitâche(0) FinProgramme() FIN SINON Erreur("Fichier introuvable",FicLocal) FIN SINON FTPDéconnecte(IDCOnnexion) Erreur("Erreur transfert "+nfic+" vers "+FicLocal) FIN SINON Info("Connexion pas OK") FIN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import android.content.*; import android.content.pm.*; import android.content.pm.PackageManager; public static String TestVersionAPK(String FileName) { String Valret=""; Context myContext = getApplicationContext(); PackageManager pm = myContext.getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(FileName,PackageManager.GET_META_DATA); if(info != null) { Valret=info.versionName; } else { Valret="0.0.0.0"; } return Valret; }
Partager