日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android WebView播放视频flash(判断是否安装flash插件)

發布時間:2023/12/20 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android WebView播放视频flash(判断是否安装flash插件) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android WebView播放flash(判斷是否安裝flash插件)?

最近幫一個同學做一個項目,斷斷續續的一些知識點記錄一下。一個頁面中有一個WebView,用來播放swf,如果系統中未安裝flash插件,必須提示用戶到market中安裝。

下面做一個demo,效果圖如下:


首先布局文件,很簡單:

[html]?view plaincopy
  • <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:

    [java]?view plaincopy
  • 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]?view plaincopy
  • <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>??
  • 這個html文件中有一個鏈接,點擊這個鏈接則會跳轉到market中去下載,這就涉及到了在Javascript中調用Java本地方法,下面說如何調用,看上面鏈接的onclick中,它調用window.android對象的goMarket()方法,普通瀏覽器打開這個頁面的,window.android是未定義的,則我們就需要在Java中構建這么一個對象,WebView有一個
    [java]?view plaincopy
  • addJavascriptInterface(Object?obj,?String?interfaceName);??
  • 方法,第一個參數就是我們需要構建的綁定到javascript的那個對象,第二個參數就是在javascript中調用的名字,這兒就是android。

    [java]?view plaincopy
  • private?void?install()?{??
  • ????????mWebView.addJavascriptInterface(new?AndroidBridge(),?"android");??
  • ????????mWebView.loadUrl("file:///android_asset/go_market.html");??
  • }??
  • 我們所構建的對象如下:

    [java]?view plaincopy
  • 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下,如圖三:

    [java]?view plaincopy
  • String?url="file:///android_asset/a.swf";??
  • mWebView.loadUrl(url);??
  • 當然一開始要對WebView進行一些設置:

    [java]?view plaincopy
  • WebSettings?setting=mWebView.getSettings();??
  • setting.setPluginState(PluginState.ON);??
  • setting.setJavaScriptEnabled(true);??
  • android4.0以上還得開啟硬件加速,在manifest文件中,這個activity標簽下加上如下屬性:

    [html]?view plaincopy
  • android:hardwareAccelerated="true"??
  • demo打包下載。

    WebView播放flash,兼容問題還不少,我不太推薦使用。

    總結

    以上是生活随笔為你收集整理的Android WebView播放视频flash(判断是否安装flash插件)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。