webview 載入H5頁面音樂不會自動播放問題解決方案
阿新 • • 發佈:2019-01-27
有公司在我們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在載入完成後,自己去開啟音樂播放無法成功,我不是很清楚。但是通過這個回撥是可以成功的。
以上。