Android WebView播放视频flash(判断是否安装flash插件)
生活随笔
收集整理的這篇文章主要介紹了
Android WebView播放视频flash(判断是否安装flash插件)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Android WebView播放flash(判斷是否安裝flash插件)?
<RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"?? ????xmlns:tools="http://schemas.android.com/tools"?? ????android:layout_width="match_parent"?? ????android:layout_height="match_parent"?>?? ????<WebView?? ????????android:id="@+id/webview"??? ????????android:layout_width="fill_parent"?? ????????android:layout_height="fill_parent"?? ????????android:layout_centerInParent="true"?/>?? </RelativeLayout>?? 接著activity,得先檢測(cè)系統(tǒng)中是否已經(jīng)安裝了adobe flash player插件,插件的packageName是com.adobe.flashplayer: private?boolean?check()?{?? ????????PackageManager?pm?=?getPackageManager();?? ????????List<PackageInfo>?infoList?=?pm?? ????????????????.getInstalledPackages(PackageManager.GET_SERVICES);?? ????????for?(PackageInfo?info?:?infoList)?{?? ????????????if?("com.adobe.flashplayer".equals(info.packageName))?{?? ????????????????return?true;?? ????????????}?? ????????}?? ????????return?false;?? }?? 如果未安裝,則要做出提醒,為了提供良好的體驗(yàn),我通過(guò)WebView加載一個(gè)簡(jiǎn)單的html文件來(lái)提醒,html文件放在assets下,如圖一: <html>?? <head></head>?? <body>?? <h3>Not?install?adobe?flash?player!</h3>?? <p>?? <a?href="#"?onclick="window.android.goMarket()">go?market?to?install.</a>?? </p>?? </body>?? </html>?? 這個(gè)html文件中有一個(gè)鏈接,點(diǎn)擊這個(gè)鏈接則會(huì)跳轉(zhuǎn)到market中去下載,這就涉及到了在Javascript中調(diào)用Java本地方法,下面說(shuō)如何調(diào)用,看上面鏈接的onclick中,它調(diào)用window.android對(duì)象的goMarket()方法,普通瀏覽器打開(kāi)這個(gè)頁(yè)面的,window.android是未定義的,則我們就需要在Java中構(gòu)建這么一個(gè)對(duì)象,WebView有一個(gè)
[java]?view plaincopy addJavascriptInterface(Object?obj,?String?interfaceName);?? 方法,第一個(gè)參數(shù)就是我們需要構(gòu)建的綁定到j(luò)avascript的那個(gè)對(duì)象,第二個(gè)參數(shù)就是在javascript中調(diào)用的名字,這兒就是android。 private?void?install()?{?? ????????mWebView.addJavascriptInterface(new?AndroidBridge(),?"android");?? ????????mWebView.loadUrl("file:///android_asset/go_market.html");?? }?? 我們所構(gòu)建的對(duì)象如下: private?class?AndroidBridge?{?? ????????public?void?goMarket()?{?? ????????????handler.post(new?Runnable()?{?? ????????????????public?void?run()?{?? ????????????????????Intent?installIntent?=?new?Intent(?? ????????????????????????????"android.intent.action.VIEW");?? ????????????????????installIntent.setData(Uri?? ????????????????????????????.parse("market://details?id=com.adobe.flashplayer"));?? ????????????????????startActivity(installIntent);?? ????????????????}?? ????????????});?? ????????}?? }?? javascript如果調(diào)用goMarket()方法,則進(jìn)入的是專(zhuān)用于瀏覽器的特殊線程,如果涉及的UI更新,則要通過(guò)handler來(lái)操作。這樣點(diǎn)擊鏈接后會(huì)調(diào)用你手機(jī)中的market軟件,如圖二。安裝之后就能播放flash了。有一個(gè)a.swf在assets下,如圖三: String?url="file:///android_asset/a.swf";?? mWebView.loadUrl(url);?? 當(dāng)然一開(kāi)始要對(duì)WebView進(jìn)行一些設(shè)置: WebSettings?setting=mWebView.getSettings();?? setting.setPluginState(PluginState.ON);?? setting.setJavaScriptEnabled(true);?? android4.0以上還得開(kāi)啟硬件加速,在manifest文件中,這個(gè)activity標(biāo)簽下加上如下屬性: android:hardwareAccelerated="true"??
最近幫一個(gè)同學(xué)做一個(gè)項(xiàng)目,斷斷續(xù)續(xù)的一些知識(shí)點(diǎn)記錄一下。一個(gè)頁(yè)面中有一個(gè)WebView,用來(lái)播放swf,如果系統(tǒng)中未安裝flash插件,必須提示用戶(hù)到market中安裝。
下面做一個(gè)demo,效果圖如下:
首先布局文件,很簡(jiǎn)單:
[html]?view plaincopy
[java]?view plaincopy
[html]?view plaincopy
[java]?view plaincopy
[java]?view plaincopy
[java]?view plaincopy
[java]?view plaincopy
[java]?view plaincopy
[html]?view plaincopy
demo打包下載。
WebView播放flash,兼容問(wèn)題還不少,我不太推薦使用。
總結(jié)
以上是生活随笔為你收集整理的Android WebView播放视频flash(判断是否安装flash插件)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WAIC预热 | 赋能企业数字化转型,容
- 下一篇: DT时代,大数据分析都包含了哪些技术?