Как проверить, установлена ​​ли Flash? - PullRequest
3 голосов
/ 16 декабря 2010

Я использую этот фрагмент, чтобы проверить, установлено ли приложение / действие:

    public static boolean isIntentAvailable(Context context, String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> list =
            packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

public static boolean isScanAvailable(Context context) {
    return isIntentAvailable(context, "com.google.zxing.client.android.SCAN");
}

В приведенном выше примере он проверяет, установлено ли приложение сканера штрих-кода, которое работает просто отлично. Однако, если я пытаюсь проверить Adobe Flashplayer, используя com.adobe.flashplayer, он не работает и всегда возвращает false.

Есть ли лучший / более надежный метод проверки Flash?

1 Ответ

14 голосов
/ 23 декабря 2010

Хм, да. Мой код, размещенный выше, выполняет проверку намерений, которая не работает для flashplayer (я полагаю, нет публичных намерений).

Более очевидный способ - просто использовать getPackageInfo(), который прекрасно работает:

    public static boolean isFlashAvailable(Context context) {
    String mVersion;
    try {
        mVersion = context.getPackageManager().getPackageInfo(
                "com.adobe.flashplayer", 0).versionName;
          Log.d("Flash", "Installed: " + mVersion);
          return true;
    } catch (NameNotFoundException e) {
          Log.d("Flash", "Not installed");
          return false;
    }
   }

(в качестве дополнительного бонуса мы также получаем точный номер версии)

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