如何检查 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 下载并安装了 Adobe 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 位置