1. 程式人生 > >webview 載入H5頁面音樂不會自動播放問題解決方案

webview 載入H5頁面音樂不會自動播放問題解決方案

有公司在我們app上面投廣告,發現他們的h5頁面音樂不會自動播放。
經過幾番折騰,確認以下方案可用。

1.開啟js支援

 WebSettings setings = mWebView.getSettings();
 setings.setJavaScriptEnabled(true);

2.設定WebViewClient

 mWebView.setWebViewClient(new CustomWebViewClient());
 //CustomWebViewClient為自定義WebViewClient()
  private final class CustomWebViewClient
extends WebViewClient {
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { mWebView.loadUrl(url); return true; } //url載入失敗 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super
.onReceivedError(view, errorCode, description, failingUrl); //做自己的一些處理,比如載入我們自定義的view或者給使用者一個提示 } //頁面載入完成的時候呼叫 @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") @Override public void onPageFinished(WebView view, String url) { super
.onPageFinished(view, url); mWebView.loadUrl("javascript:startPlay()"); //可以做一些載入完成的處理,比如隱藏正在載入的動畫 } //頁面開始載入的時候呼叫 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //可以做一些載入完成的處理,比如顯示正在載入的動畫 } }

重點在onPageFinished這個方法,在確認web載入完成後,去呼叫h5中的js音樂播放方法。

h5中的startPlay()方法只有一行程式碼,開啟音樂播放。

function startPlay(){
    music.play().loop(); //music時音樂播放器物件
}

至於為什麼h5在載入完成後,自己去開啟音樂播放無法成功,我不是很清楚。但是通過這個回撥是可以成功的。
以上。