2010-12-16 134 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"); 
} 

在當安裝了條形碼掃描應用程序它檢查上面的例子中,它工作得很好。 但是,如果我嘗試使用com.adobe.flashplayer檢查Adobe Flashplayer,它不起作用並始終返回false。

是否有更好/更可靠的方法來檢查Flash?

回答

14

嚴正耶。我上面發佈的代碼確實意圖檢查哪些不適合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; 
    } 
    } 

(作爲額外的獎勵,我們得到確切的版本號太)