首页 文章

如何检查Android上是否安装了Flash播放器

提问于
浏览
3

如果从Android Market下载并安装了Adobe Flash Player 10.1(https://market.android.com/details?id=com.adobe.flashplayer),如何在Android Web浏览器中轻松检入Javascript?

更新:感谢您的回复,但我需要 Javascript 的检查代码,因为我正在进行基于Web(HTML / Javascript / CSS)的解决方案,而不是本机Java应用程序 . Web应用程序的一小部分是在Flex中完成的,因此.swf文件显示在 <div> 元素中,但在此之前我想检查是否安装了Flash Player .

3 回答

  • 0

    您可以使用PackageManager:

    http://developer.android.com/reference/android/content/pm/PackageManager.html

    查看getInstalledApplications()方法 .

  • 1

    另一种做同样工作的方法

    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;
        }
    
  • 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播放器的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>
    

    您可以按照说明here了解如何从JavaScript代码中调用此代码 . 具体来看一下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;
        }
    }
    

相关问题