2010-12-16 10 views
3

я использую этот фрагмент, чтобы проверить, если приложение/деятельность установлена:Как проверить, установлена ​​ли Flash?

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?

ответ

14

Uhm да. Мой код, вышедший выше, проверяет Intent, который не работает для 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; 
    } 
    } 

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

Смежные вопросы