PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Lancer une application tierce
Lancer une application tierce
Débuté par Ian, 10 aoû. 2017 11:51 - 5 réponses
Membre enregistré
106 messages
Popularité : +3 (3 votes)
Posté le 10 août 2017 - 11:51
Bonjour à tous,

je suis sous windev mobile 21, mon passage au la version 22 n'est pas pour tout de suite. Du coup, depuis mon appli, j'ai besoin de lancer une apk tierce.

J'ai suivis le sujet suivant sur ce forum : https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/10663-wm17-android-ouvrir-application-tierce/read.awp

import android.app.Activity;
import android.content.*;

PUBLIC static void LanceAppli1()
{
Activity act = getActiviteEnCours();
act.startActivity(act.getPackageManager().getLaunchIntentForPackage("com.test.appli1"));
}


Ça fonctionne dans le cas où l' apk que je veux lancer est présente sur le mobile, dans le cas contraire j'ai une erreur fatale ce qui me parait entièrement logique.

Comment faire pour savoir si l’api tierce est bien présente sur le mobile ou comment pour exécuter le code précédent que si l' apk tierce est présente ?

Merci d'avance pour vos retour

--
- ian -
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 10 août 2017 - 12:01
Bonjour Ian,

Une solution un peu sale: tu peux entourer ton code avec un try-catch, et faire en sorte que ta méthode renvoie un booléan "true" en cas de succès, sinon "false".

Ta déclaration :

public static boolean LanceAppli1()


Dans le catch :

return false;


Tout à la fin (donc dans le cas ou le catch n'est pas invoqué) :

return true;
Membre enregistré
106 messages
Popularité : +3 (3 votes)
Posté le 10 août 2017 - 12:16
Bonjour Gaël,

pardonne moi d'avance pour ma non maîtrise de JAVA, je vois pas du tout comment gérer ce que tu viens de m'expliquer :(

EDIT : je lis quelques infos sur le try-catch en attendant une réponse ^^

--
- ian -
Message modifié, 10 août 2017 - 12:26
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 10 août 2017 - 13:33
Bonjour,
Cette fonction java devrait vous permettre de savoir si l'application est installée sur votre mobile

import android.content.pm.*;
import android.content.Context;
import java.util.List;

PUBLIC static string getInstalledPackage()
{
string ListInstalledPackage = "";

Context myContext = getContexteApplication();

PackageManager pm = myContext.getPackageManager();

List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
ListInstalledPackage = ListInstalledPackage + pm.getApplicationLabel(packageInfo) + "(" + packageInfo.packageName + ")\r\n";
}
RETURN ListInstalledPackage;
}
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 10 août 2017 - 13:38
Rebonjour Ian,

La solution de Philippe est plus propre et envisageable.

Voici le code de ta méthode avec ma technique :

import android.app.Activity;
import android.content.*;

public static boolean LanceAppli1()
{
Activity act = getActiviteEnCours();
try {
act.startActivity(act.getPackageManager().getLaunchIntentForPackage("com.test.appli1"));
} catch (Exception e) {
return false;
}
return true;
}


Fais de tête, faut voir si ça fonctionne.

Ensuite dans WinDev :

SI (PAS LanceAppli1()) ALORS
Info("L'app n'est pas installée")
FIN
Membre enregistré
106 messages
Popularité : +3 (3 votes)
Posté le 10 août 2017 - 14:10
Merci a vous deux, je vais tâcher de comprendre avant de copier bêtement surtout celle de Philippe

Merci encore

--
- ian -