Flash バージョン確認 JavaScript

1,118 views
Skip to first unread message

kensak0615

unread,
Apr 11, 2011, 12:03:47 PM4/11/11
to 日本Androidの会
皆様

Android端末にインストールされているFlashのバージョンを判定するJavaScriptを書きたいんですが、
どうも、上手くいきません・・・

Android2.2OS でFlash10.1以上がインストールされていない端末に対して、インストールを促すアラートと、
Android2.1OS ではFlashがインストールできませんという事を伝えるアラートをダイアログで出したいと思っています。

もし、これらの課題を解決できる方法をご存知であれば、ご教授ください。
よろしくお願い致します。

Nkzn

unread,
Apr 11, 2011, 11:54:41 PM4/11/11
to 日本Androidの会
なかざんです。

とりあえず、Android 2.1か2.2を判断するのにFlashの有無を使うのは非効率ですので、
別の方法にしましょう。
android.os.Build.VERSION.RELEASE でバージョンを表す文字列("2.1-update1"とか"2.2"とか)がも
らえますし、
android.os.Build.VERSION.SDK_INTなら通し番号がINTでもらえます。
http://developer.android.com/reference/android/os/Build.VERSION.html

さて、これでAndroid側は2.2以上の振り分けができました。
Flash Playerの有無判定についてですが、以下のとおり「com.adobe.flashplayer」というパッケージ名が付いていま
す。
https://market.android.com/details?id=com.adobe.flashplayer
Intentで「com.adobe.flashplayer」を呼んでみて、エラーが出たらブラウザを開いて↑のURLへ誘導すれば問題ないと思いま
す。


また、Android 2.2以上でもハードウェアスペックの問題などでFlashが搭載されていない端末があるので注意が必要です。

Android 2.2だからといって『Flash Player 10.1』が動くわけではない - ガジェット通信
http://getnews.jp/archives/89453

↑を読んでいての思いつきですが、
「Android 2.2端末から『market://search?q=pname:com.adobe.flashplayer』を探して、見つか
らなければFlash非対応端末」
という考え方ができるかも知れません。

以上、ご参考までに。

--Yukiya Nakagawa

Nkzn

unread,
Apr 11, 2011, 11:55:47 PM4/11/11
to 日本Androidの会
あー、JavaScriptの際の方法をお聞きだったんですね。失礼しました。。。orz

On 4月12日, 午前1:03, kensak0615 <kensak0...@gmail.com> wrote:

Nkzn

unread,
Apr 12, 2011, 12:01:56 AM4/12/11
to 日本Androidの会
なんども失礼します、なかざんです。

JavaScriptとJavaで処理を連携する方法があるらしいです。
一度、処理をJavaに投げてみてはいかがでしょうか。

http://www.adamrocker.com/blog/172/javascript_android_bridge.html
http://d.hatena.ne.jp/tomstay/20110404/1301925991

sakamoto toshiyuki

unread,
Apr 12, 2011, 2:08:44 AM4/12/11
to android-g...@googlegroups.com, Nkzn
坂本といいます。こんにちは。

JavaScriptから判定するなら、普通にUserAgentを調べてはどうですか?

「Mozilla/5.0 (Linux; U; Android 2.1-update1; en-jp; HTCX06HT
Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile
Safari/530.17」
等のようにOSのバージョンが含まれています。

if (navigator.userAgent.indexOf(“Android 2.1”) > 0) {
// Android 2.1
} else if (navigator.userAgent.indexOf(“Android 2.2”) > 0) {
// Android 2.2
} else {
// それ以外
}

こんな感じで


それでは

2011年4月12日13:01 Nkzn <yn.ai...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

sakamoto toshiyuki

unread,
Apr 12, 2011, 2:11:09 AM4/12/11
to android-g...@googlegroups.com, Nkzn
坂本です。

あと、Flashが使えるかどうかは、普通にnavigator.pluginsの配列にFlashが含まれているかチェックすればOKですよ。入っているFlashがFlashPlayer10なのかFlashLiteなのかは別ですが。


それでは


2011年4月12日15:08 sakamoto toshiyuki <sakamo...@gmail.com>:

Takumu

unread,
Apr 12, 2011, 4:41:59 AM4/12/11
to 日本Androidの会
GalaxyTabとHT-03Aで試してみた限り、以下のスクリプトで判別できました。
他の端末でFlashPlayerの情報がどのように入ってるか不明なので、
上記以外の端末で問題なく判別できるか不明ですが。

var hasFlashPlayer = function() {
var flag = {os: false,
player: false};
var userAgent = navigator.userAgent.match(/android (\d+\.\d+)/i);

if (!!userAgent && (userAgent[1] >= 2.2)) {
flag.os = true;
var plugins = navigator.plugins;
for (key in plugins) {
var description = (plugins[key]['description'] ||
'').match(/shockwave flash (\d+\.\d+)/i);
if (!!description && (description[1] >= 10.1)) {
flag.player = true;
}
}
}

return flag;
};

kensak0615

unread,
Apr 12, 2011, 11:31:55 AM4/12/11
to 日本Androidの会
Takumuさん

スクリプトありがとうございます!

いろいろ、トライしてみたんですが、良い解決方法が見つからず、悩んでおりました・・・
以下のスクリプトで組み込んで、テストしてみます。

助かりました!

var vsn = getFlashPlayerVersion();
Reply all
Reply to author
Forward
0 new messages