webentwicklung-frage-antwort-db.com.de

So prüfen Sie, ob Facebook Android installiert ist

Ich ändere meine App, um herauszufinden, ob ein Benutzer versucht, zu veröffentlichen, ohne dass die Facebook-App installiert ist (erforderlich für SSO). Hier ist der Code, den ich verwende:

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

Das Problem ist, dass immer ein Fehler auftritt. Entsprechend der Frage hier muss ich die entsprechende Erlaubnis beantragen, aber ich weiß nicht, welche Erlaubnis ich beantragen muss.

Ist mein Problem eine Erlaubnis oder etwas anderes?

61
easycheese

com.facebook.Android ist der Paketname für das Facebook SDK. Das Paket der Facebook-App lautet com.facebook.katana.

97
Torid

Um zu überprüfen, ob eine App auf Android installiert ist, verwenden Sie diese Methode:

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

Verwenden Sie in Ihrem Fall eines der folgenden Pakete:

  • 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

Schreiben Sie die Funktion in Dienstprogramme oder an einen beliebigen Ort. Diese Funktion hilft Ihnen, alle installierten Apps zu überprüfen oder nicht. Lassen Sie mich sagen, dass dies in Dienstprogramme.Java der Fall ist

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

Dann rufen Sie diese Funktion von überall auf. um zB die Facebook App zu überprüfen

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

Genießen

1
yubaraj poudel

Am besten ist es, den Paketnamen einschließlich com.facebook auszuwählen. Sie können jedoch folgende Pakete verwenden:

  • 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);

dieser Code hat für mich funktioniert

0
Avinash