publicclassMainActivityextendsAppCompatActivity{@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// Add respective layout
setContentView(R.layout.main_activity);// Use package name which we want to checkboolean isAppInstalled = appInstalledOrNot("com.check.application");if(isAppInstalled){//This intent will help you to launch if the package is already installedIntentLaunchIntent= getPackageManager().getLaunchIntentForPackage("com.check.application");
startActivity(LaunchIntent);Log.i("Application is already installed.");}else{// Do whatever we want to do if application not installed// For example, Redirect to play storeLog.i("Application is not currently installed.");}}privateboolean appInstalledOrNot(String uri){PackageManager pm = getPackageManager();try{
pm.getPackageInfo(uri,PackageManager.GET_ACTIVITIES);returntrue;}catch(PackageManager.NameNotFoundException e){}returnfalse;}}
@Sathish: J'espère que cela pourra vous être utile
Aerrow
1
Nul doute que votre message est vraiment utile, mais j'obtiens une exception "java.lang.RuntimeException: L'ajout de la fenêtre a échoué" et "E / AndroidRuntime (7554): Causé par: android.os.TransactionTooLargeException 05-14 11: 37: 25.305 : E / AndroidRuntime (7554): sur android.os.BinderProxy.transact (Méthode native) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): sur android.view.IWindowSession $ Stub $ Proxy.add (IWindowSession .java: 516) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): at android.view.ViewRootImpl.setView (ViewRootImpl.java:494) "
DJhon
2
@BlueGreen: Salut, j'espère que ce lien peut vous aider, stackoverflow.com/questions/11451393/… , sinon si vous utilisez Dialog Class, veuillez le vérifier. :)
Aerrow
1
@Aerrow .. Supposons que je vérifie que mon .apk est installé ou non? au moment de l'installation ... J'obtiens la même exception en vérifiant mon package com.test.installedornot.Ma taille .apk est supérieure à 9 Mo alors dans ce cas, comment vais-je gérer cette exception?
DJhon
@BlueGreen: Le code ci-dessus vérifiera uniquement l'application installée, au moment de l'installation, cela ne fonctionnera pas. Dans votre cas, utilisez le récepteur de diffusion pour obtenir la notification une fois l'apk installé.
Aerrow
65
Solution un peu plus propre que la réponse acceptée (basée sur cette question ):
Cette réponse montre comment obtenir l'application depuis le Play Store si l'application est manquante, bien que des précautions doivent être prises sur les appareils qui ne disposent pas du Play Store.
Vérifiez que l'application est installée ou non dans Android en utilisant kotlin.
Création de l'extension kotlin.
fun PackageManager.isAppInstalled(packageName:String):Boolean=try{
getApplicationInfo(packageName,PackageManager.GET_META_DATA)true}catch(e:Exception){false}
Maintenant, peut vérifier si l'application est installée ou non
if(packageManager.isAppInstalled("AppPackageName")){// App is installed}else{// App is not installed}
Ce code est utilisé pour vérifier si votre application avec le nom du package est installée ou non sinon il ouvrira le lien Playstore de votre application sinon votre application installée
String your_apppackagename="com.app.testing";PackageManager packageManager = getPackageManager();ApplicationInfo applicationInfo =null;try{
applicationInfo = packageManager.getApplicationInfo(your_apppackagename,0);}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();}if(applicationInfo ==null){// not installed it will open your app directly on playstore
startActivity(newIntent(Intent.ACTION_VIEW,Uri.parse("https://play.google.com/store/apps/details?id="+ your_apppackagename)));}else{// InstalledIntentLaunchIntent= packageManager.getLaunchIntentForPackage(your_apppackagename);
startActivity(LaunchIntent);}
private fun isAppInstalled(context:Context, uri:String):Boolean{
val packageInfoList = context.packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES)return packageInfoList.asSequence().filter { it?.packageName == uri }.any()}
Toutes les réponses vérifient uniquement que certaines applications sont installées ou non. Mais, comme nous le savons tous, une application peut être installée mais désactivée par l'utilisateur, inutilisable.
Par conséquent, cette solution vérifie les deux. c'est-à-dire, les applications installées ET activées .
Réponses:
Essayez avec ceci:
la source
Solution un peu plus propre que la réponse acceptée (basée sur cette question ):
J'ai choisi de le mettre dans une classe d'assistance en tant qu'utilitaire statique. Exemple d'utilisation:
Cette réponse montre comment obtenir l'application depuis le Play Store si l'application est manquante, bien que des précautions doivent être prises sur les appareils qui ne disposent pas du Play Store.
la source
Le code ci-dessus n'a pas fonctionné pour moi. L'approche suivante a fonctionné.
Créez un objet Intent avec les informations appropriées, puis vérifiez si l'intent est appelable ou non à l'aide de la fonction suivante:
la source
if
déclarations! C'est certainement la bonne réponseIntent intent = getPackageManager().getLaunchIntentForPackage("org.package.name");
Si vous connaissez le nom du package, cela fonctionne sans utiliser de bloc try-catch ni itérer dans un tas de packages:
la source
return !list.isEmpty();
serait plus convivial de style javaCe code vérifie que l'application est installée, mais vérifie également qu'elle est activée.
la source
Je pense que l'utilisation du modèle try / catch n'est pas très bonne pour les performances. Je conseille d'utiliser ceci:
la source
Solution plus propre (sans try-catch) que la réponse acceptée (basée sur AndroidRate Library ):
la source
Création de l'extension kotlin.
Maintenant, peut vérifier si l'application est installée ou non
la source
Essaye ça
la source
Une implémentation plus simple avec Kotlin
Et appelez-le comme ceci (à la recherche de l'application Spotify):
la source
Réponse de @Egemen Hamutçu dans kotlin B-)
la source
Toutes les réponses vérifient uniquement que certaines applications sont installées ou non. Mais, comme nous le savons tous, une application peut être installée mais désactivée par l'utilisateur, inutilisable.
Par conséquent, cette solution vérifie les deux. c'est-à-dire, les applications installées ET activées .
Appelez la méthode
isPackageInstalled()
:Maintenant, utilisez la variable booléenne
isAppInstalled
et faites ce que vous voulez.la source
Une bonne réponse à d'autres problèmes. Si vous ne voulez pas différencier "com.myapp.debug" et "com.myapp.release" par exemple!
la source
Tellement mieux avec Kotlin Suger:
la source