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?
com.facebook.Android
ist der Paketname für das Facebook SDK. Das Paket der Facebook-App lautet com.facebook.katana
.
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:
boolean hasPackage = isPackageInstalled(MainActivity.this, "com.facebook.katana");
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;
}
}
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
Am besten ist es, den Paketnamen einschließlich com.facebook auszuwählen. Sie können jedoch folgende Pakete verwenden:
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