WebView播放优酷视频加载失败问题

855 阅读1分钟

1)开启webview硬件加速

2)开启javascript支持

3)需要设置setWebChromeClient

4)5.0以上手机需要webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);



示例代码:

webView = new WebView(this);
webView.setLayerType(View.LAYER_TYPE_HARDWARE,new Paint());
/***打开本地缓存提供JS调用**/
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 10);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
webView.getSettings().setAppCachePath(appCachePath);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setSaveFormData(false);
webView.getSettings().setLoadWithOverviewMode(false);

webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new MyWebChromeClient());
webView.setVerticalScrollBarEnabled(false);
webView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


WebViewClient设置

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if(url.startsWith("intent")||url.startsWith("youku")){
        return true;
    }
    Uri uri = Uri.parse(url);
    handlerAction(uri);
    return super.shouldOverrideUrlLoading(view, url);
}