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 :

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
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
 
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;
}