web-dev-qa-db-fra.com

Comment vérifier si Facebook est installé Android

Je modifie mon application pour pouvoir intercepter si un utilisateur tente de publier sans que l'application facebook soit installée (requis pour SSO). Voici le code que j'utilise:

try{
    ApplicationInfo info = getPackageManager().
            getApplicationInfo("com.facebook.Android", 0 );
    return true;
} catch( PackageManager.NameNotFoundException e ){
    return false;
}

Le problème, c'est qu'il attrape toujours une erreur. Selon la question ici , je dois demander l’autorisation appropriée, mais je ne sais pas quelles autorisations je dois demander.

Est-ce que mon problème est une permission ou autre chose?

61
easycheese

com.facebook.Android est le nom du package pour le SDK de Facebook. Le package de l'application Facebook est com.facebook.katana.

97
Torid

Pour vérifier si une application est installée sur Android, utilisez cette méthode:

public static boolean isPackageInstalled(Context c, String targetPackage) {
    PackageManager pm = c.getPackageManager();
    try {
        PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}

Dans votre cas, utilisez l'un de ces packages:

  • com.facebook.orca 
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.Android
boolean hasPackage = isPackageInstalled(MainActivity.this, "com.facebook.katana");
5
N.Droid
 if (isAppInstalled()) {
        Toast.makeText(getApplicationContext(), "facebook app already installed", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(getApplicationContext(), "facebook app not installing", Toast.LENGTH_SHORT).show();
    }



public boolean isAppInstalled() {
            try {
                getApplicationContext().getPackageManager().getApplicationInfo("com.facebook.katana", 0);
                return true;
            } catch (PackageManager.NameNotFoundException e) {
                return false;
            }
        }
2
Sanjay Mangaroliya

Écrivez la fonction dans Utilitaires ou n'importe où pour vous.Cela fonctionnera pour vous permettre de vérifier si une application est installée ou non.laissez-moi dire qu'elle est dans Utilities.Java

public static boolean isAppInstalled(Context context, String packageName) {
        try {
            context.getPackageManager().getApplicationInfo(packageName, 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

Ensuite, appelez cette fonction de n’importe où. par exemple pour vérifier l'application facebook

if(Utilities.isAppInstalled(getApplicationContext(), "com.facebook.katana")) {
                    // Do something
                }else {
                    Intent i = new Intent(Android.content.Intent.ACTION_VIEW);
                    i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana"));
                    startActivity(i);
                }

Prendre plaisir

1
yubaraj poudel

La meilleure approche consiste à choisir le nom du paquet, y compris com.facebook, mais vous pouvez quand même utiliser les paquets suivants:

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.Android
0
Abe
Intent i = new Intent(Android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana"));
startActivity(i);

ce code a fonctionné pour moi

0
Avinash