Android WebView播放flash(判斷是否安裝flash外掛)
最近幫一個同學做一個專案,斷斷續續的一些知識點記錄一下。一個頁面中有一個WebView,用來播放swf,如果系統中未安裝flash外掛,必須提示使用者到market中安裝。
下面做一個demo,效果圖如下:
首先佈局檔案,很簡單:
<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,得先檢測系統中是否已經安裝了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;
}
如果未安裝,則要做出提醒,為了提供良好的體驗,我通過WebView載入一個簡單的html檔案來提醒,html檔案放在assets下,如圖一:
<html>
<head></head>
<body>
<h3>Not install adobe flash player!</h3>
<p>
<a href="#" οnclick="window.android.goMarket()">go market to install.</a>
</p>
</body>
</html>
這個html檔案中有一個連結,點選這個連結則會跳轉到market中去下載,這就涉及到了在Javascript中呼叫Java本地方法,下面說如何呼叫,看上面連結的onclick中,它呼叫window.android物件的goMarket()方法,普通瀏覽器開啟這個頁面的,window.android是未定義的,則我們就需要在Java中構建這麼一個物件,WebView有一個addJavascriptInterface(Object obj, String interfaceName);
方法,第一個引數就是我們需要構建的繫結到javascript的那個物件,第二個引數就是在javascript中呼叫的名字,這兒就是android。
private void install() {
mWebView.addJavascriptInterface(new AndroidBridge(), "android");
mWebView.loadUrl("file:///android_asset/go_market.html");
}
我們所構建的物件如下:
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如果呼叫goMarket()方法,則進入的是專用於瀏覽器的特殊執行緒,如果涉及的UI更新,則要通過handler來操作。這樣點選連結後會呼叫你手機中的market軟體,如圖二。安裝之後就能播放flash了。有一個a.swf在assets下,如圖三:
String url="file:///android_asset/a.swf";
mWebView.loadUrl(url);
當然一開始要對WebView進行一些設定:
WebSettings setting=mWebView.getSettings();
setting.setPluginState(PluginState.ON);
setting.setJavaScriptEnabled(true);
android4.0以上還得開啟硬體加速,在manifest檔案中,這個activity標籤下加上如下屬性:
android:hardwareAccelerated="true"
WebView播放flash,相容問題還不少,我不太推薦使用。
相關文章
- flash外掛怎麼安裝 電腦安裝flash外掛步驟
- ubuntu 安裝瀏覽器flash外掛Ubuntu瀏覽器
- Ubuntu中給ff安裝flash 外掛Ubuntu
- Ubuntu 安裝Chromium瀏覽器並新增Flash外掛Pepper Flash PlayerUbuntu瀏覽器
- Android播放flashAndroid
- Ubuntu 16.04中為Chromium、Chrome、Firefox安裝Flash播放器外掛UbuntuChromeFirefox播放器
- Linux下安裝firefox的flash外掛LinuxFirefox
- Android系統預置flash外掛Android
- win10 edge瀏覽器如何安裝flash_win10 edge瀏覽器安裝flash外掛教程Win10瀏覽器
- flash helper service可以解除安裝嗎 win10怎麼徹底刪除flash外掛Win10
- Android 微信支付 微信是否安裝判斷Android
- QT 播放 FLASHQT
- win10提示您沒有安裝flash外掛,無法播放視訊的解決方法Win10
- win10提示您沒有安裝flash外掛,無法播放影片的解決方法Win10
- 如何檢測瀏覽器是否安裝flash瀏覽器
- android使用webview載入flash檔案AndroidWebView
- Win10系統flash外掛被360替換後IE無法播放flash怎麼解決Win10
- Safari 10預設禁用Flash外掛
- flash外掛對電腦有影響嗎 新電腦有沒有必要裝flash
- Fedora 14 x86-64 給google chrome firefox 安裝flash外掛GoChromeFirefox
- js判斷本地是否安裝appJSAPP
- WIN10在哪開啟Flash外掛 win10系統flash外掛怎麼啟用Win10
- js實現的判斷當前瀏覽器是否flash程式碼例項JS瀏覽器
- Linux下Flash/Shockwave播放器安裝快速指南(轉)Linux播放器
- Safari10預設禁用Flash外掛
- 判斷centos7是否安裝vimCentOS
- 怎樣判斷mysql是否安裝成功MySql
- android 顯示flash視訊播放器Android播放器
- Android 如何判斷螢石雲視訊是否可以播放Android
- win10支援flash軟體嗎?win10如何安裝最新flashplayer外掛Win10
- 同步快速判斷視訊是否可以播放
- flash中心是流氓軟體嗎 flash中心有必要安裝嗎
- 判斷服務是否開啟,應用是否安裝,並安裝應用
- flash player win10如何安裝_在win10下怎樣安裝flash playerWin10
- win10系統flash外掛崩潰怎麼辦_win10 flash外掛出現異常修復方法Win10
- Wix安裝程式中判斷是否安裝的.net framwork 4.5
- win10自帶flash怎麼更新 window10系統flash外掛如何更新Win10
- w10安裝不了flash怎麼辦_w10安裝不了flash的解決方法