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

Posted

技术标签:

【中文标题】如何检查 Android 上是不是安装了 Flash 播放器【英文标题】:How to check if the Flash players is installed on Android如何检查 Android 上是否安装了 Flash 播放器 【发布时间】:2011-06-22 07:53:09 【问题描述】:

如果从 android Market 下载并安装了 Adob​​e Flash Player 10.1 (https://market.android.com/details?id=com.adobe.flashplayer),如何在 Android 网络浏览器中轻松检查 javascript

--

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

【问题讨论】:

如果您有更新,请将它们编辑到您的原始问题中。这次我冒昧地为你做这件事。谢谢。 【参考方案1】:

您是否有任何特殊原因需要从 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 中检测,请使用这个 sn-p:

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;
    

【讨论】:

您好,感谢您的回复,但我需要 Javascript 代码 sn-p,因为我正在做 Web 应用程序 - 请参阅下面的答案。 我在答案中添加了纯 JavaScript 代码。它应该适用于任何基于 webKit 的浏览器(通常是任何与 netscape 兼容的浏览器)。 请参阅 *** 获取不需要了解“FlashExpandableFileChooser”名称的 Java 代码答案。【参考方案2】:

你可以使用 PackageManager:

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

查看 getInstalledApplications() 方法。

【讨论】:

【参考方案3】:

做同样工作的另一种方法

 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;
    

【讨论】:

以上是关于如何检查 Android 上是不是安装了 Flash 播放器的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式检查 Android 中是不是安装了应用程序?

Google Maps Android API V2 检查设备上是不是安装了 GoogleMaps

在 Cordova 中检查是不是在 iOS 或 Android 上注册了 URL 方案

我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置

在android中同一界面有三个按钮,点击每个按钮在旁边一个框里分别打开视频,pdf,和flas...

Android - 如何检查是不是启用了开发人员选项