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外掛步驟
- win10 edge瀏覽器如何安裝flash_win10 edge瀏覽器安裝flash外掛教程Win10瀏覽器
- flash helper service可以解除安裝嗎 win10怎麼徹底刪除flash外掛Win10
- Android 微信支付 微信是否安裝判斷Android
- win10提示您沒有安裝flash外掛,無法播放影片的解決方法Win10
- win10提示您沒有安裝flash外掛,無法播放視訊的解決方法Win10
- flash外掛對電腦有影響嗎 新電腦有沒有必要裝flash
- Android 如何判斷螢石雲視訊是否可以播放Android
- WIN10在哪開啟Flash外掛 win10系統flash外掛怎麼啟用Win10
- 判斷centos7是否安裝vimCentOS
- 怎樣判斷mysql是否安裝成功MySql
- flash中心是流氓軟體嗎 flash中心有必要安裝嗎
- Fedora22如何安裝Adobe Flash Player?Fedora22安裝Adobe Flash Player的方法
- flash player win10如何安裝_在win10下怎樣安裝flash playerWin10
- win10系統flash外掛崩潰怎麼辦_win10 flash外掛出現異常修復方法Win10
- win10自帶flash怎麼更新 window10系統flash外掛如何更新Win10
- win10支援flash軟體嗎?win10如何安裝最新flashplayer外掛Win10
- 在 Linux 上安裝 Adobe Flash PlayerLinux
- html5怎麼判斷app是否安裝?HTMLAPP
- Android判斷當前裝置是否設定了代理Android
- w10安裝不了flash怎麼辦_w10安裝不了flash的解決方法
- 黑客稱Flash外掛才是瀏覽器漏洞禍首黑客瀏覽器
- 如何判斷我的網站是否成功安裝SSL網站
- win10提示您的flash外掛已過期,無法播放視訊怎麼解決Win10
- win10提示您的flash外掛已過期,無法播放影片怎麼解決Win10
- android判斷狀態列是否可見Android
- win10系統無法播放flash怎麼辦 win10不能播放flash的解決方法Win10
- Centos下火狐瀏覽器無法播放視訊,那就安裝一個Adobe flash playerCentOS瀏覽器
- Win10系統刪除Adobe Flash Player外掛的方法Win10
- Android判斷企業微信是否登入:Android
- 在Linux系統安裝flash的步驟方法Linux
- 在Windows上如何安裝和徹底解除安裝Adobe Flash PlayeWindows
- 電腦安裝了flash但是打不開 win10系統怎麼用不了flashWin10
- win10播放器字幕外掛怎麼安裝_win10播放器字幕外掛如何用Win10播放器
- 判斷Android 當前版本是否為debug版本Android
- 如何判斷酒店客房是否安裝了偷拍攝像頭?
- NAND Flash和NOR Flash的區別NaN
- Flash CSRF
- retdec 外掛安裝