Как проверить, установлен ли Facebook Android

Я изменяю свое приложение, чтобы его можно было поймать, если пользователь пытается опубликовать его без установки приложения facebook (требуется для SSO). Вот код, который я использую:

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

Проблема в том, что она всегда ломает ошибку. В соответствии с вопросом здесь мне нужно запросить соответствующее разрешение, но я не знаю, какие разрешения мне нужно запросить.

Является ли моя проблема разрешением одного или другого?

Ответ 1

com.facebook.android - это имя пакета для SDK для Facebook. Приложение Facebook - com.facebook.katana.

Ответ 2

Чтобы проверить любое приложение, установленное на Android, или не использовать этот метод:

public static boolean isPackageExisted(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;
}

В вашем случае используйте любой пакет

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android

boolean hasPackage = isPackageExisted (MainActivity.this, "com.facebook.katana" )

Надеюсь, это поможет вам.

Ответ 3

Лучший подход - выбрать имя пакета, включая com.facebook, но в любом случае вы можете использовать следующие пакеты:

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android

Ответ 4

Запишите функцию в Утилитах или где угодно для вас. Эта функция поможет вам проверить любое установленное приложение или нет. Скажем, для себя это в Utilities.java

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

Затем вызовите эту функцию из любого места. например, для проверки приложения 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);
                }

Enjoy

Ответ 5

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

Ответ 6

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

этот код работал у меня