2011-02-06 84 views
3

如何在Android Web瀏覽器中輕鬆檢查Javascript,如果Adobe Flash Player 10.1(https://market.android.com/details?id=com.adobe .flashplayer)是從Android Market下載並安裝的?如何檢查Flash播放器是否安裝在Android上

-

更新:感謝您的回覆,但我需要的Javascript校驗碼,因爲我做的基於Web的(HTML/JavaScript的/ CSS)的解決方案,而不是原生的Java應用程序。 Web應用程序的一小部分是在Flex中完成的,因此.swf文件顯示在<div>元素中,但在此之前我想檢查是否安裝了Flash Player。

+0

如果你有更新,請編輯成你原來的問題。這次我冒着爲你做這件事的自由。謝謝。 – Sampson 2011-02-07 14:20:27

回答

4

是否有任何特殊原因需要從Javascript中檢查而不是從Java代碼中檢查?

從Java代碼中,你可以做這樣的事情:

Intent intent = new Intent(); 

    intent.setComponent(new ComponentName("com.adobe.flashplayer", "com.adobe.flashplayer.FlashExpandableFileChooser")); 
    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); 
    if (activities != null && activities.size() > 0) { 
     Toast.makeText(this, "Flash is installed!", Toast.LENGTH_LONG).show(); 
    } 
    else { 
     Toast.makeText(this, "Flash not installed!", Toast.LENGTH_LONG).show(); 
    } 

在我的HTC Desire效果很好。

如果您想知道我從哪裏取得了com.adobe.flashplayer.FlashExpandableFileChooser類名,我只是將它從Flash Player的AndroidManifest.xml中取出。

它看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:versionCode="101106016" 
     android:versionName="10.1.106.16" 
     package="com.adobe.flashplayer" 
     > 
     <application 
       android:label="Adobe Flash Player 10.1" 
       android:icon="@7F020000" 
       > 
       <activity 
         android:name="com.adobe.flashplayer.FlashExpandableFileChooser" 
         > 
         <intent-filter 
           > 
           <action 
             android:name="android.intent.action.MAIN" 
             > 
           </action> 
           <category 
             android:name="android.intent.category.DEFAULT" 
             > 
           </category> 
           <category 
             android:name="FlashExpandableFileChooser" 
             > 
           </category> 
         </intent-filter> 
       </activity> 
       <service 
         android:name="com.adobe.flashplayer.FlashPaintSurface" 
         > 
         <intent-filter 
           > 
           <action 
             android:name="android.webkit.PLUGIN" 
             > 
           </action> 
         </intent-filter> 
         <meta-data 
           android:name="type" 
           android:value="native" 
           > 
         </meta-data> 
       </service> 
     </application> 
     <uses-permission 
       android:name="android.webkit.permission.PLUGIN" 
       > 
     </uses-permission> 
     <uses-sdk 
       android:minSdkVersion="8" 
       android:targetSdkVersion="5" 
       android:maxSdkVersion="10" 
       > 
     </uses-sdk> 
</manifest> 

您可以按照如何從JavaScript代碼調用此代碼的指令here。 具體看setJavaScriptInterface方法

要直接從JavaScript的檢測,使用此片段:

flashInstalled = false; 
if (navigator.plugins && navigator.plugins.length) { 
    for (n = 0; n < navigator.plugins.length; n++) { 
    if (navigator.plugins[n].name.indexOf('Shockwave Flash') != -1) { 
     flashInstalled = true; 
     break; 
    } 
} 
+0

嗨,感謝您的回覆,但我需要JavaScript代碼段,因爲我正在執行Web應用程序 - 請參閱下面的答案。 – STeN 2011-02-07 06:34:48

0

另一種方法做同樣的工作

boolean flashInstalled = false; 
    try { 
     PackageManager pm = getPackageManager(); 
     ApplicationInfo ai = pm.getApplicationInfo("com.adobe.flashplayer", 0); 
     if (ai != null) 
     flashInstalled = true; 
    } catch (NameNotFoundException e) { 
     flashInstalled = false; 
    } 
相關問題