Как проверить, установлен ли в Facebook Android - PullRequest
61 голосов
/ 15 июля 2011

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

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

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

Моя проблема - разрешение или что-то еще?

Ответы [ 6 ]

99 голосов
/ 15 июля 2011

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

5 голосов
/ 23 сентября 2016

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

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

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

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android
boolean hasPackage = isPackageInstalled(MainActivity.this, "com.facebook.katana");
2 голосов
/ 23 сентября 2016
 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;
            }
        }
1 голос
/ 16 июня 2016

Напишите функцию в утилитах или в любом другом подходящем для вас месте. Эта функция поможет вам проверить любое установленное приложение или нет. Позвольте мне сказать, что оно есть в Utilities.Вызовите эту функцию из любого места.например, чтобы проверить приложение 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);
                }

Наслаждайтесь

0 голосов
/ 09 февраля 2015

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

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android
0 голосов
/ 09 декабря 2014
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);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...