package name.caiyao.microreader.ui.activity; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import java.lang.reflect.InvocationTargetException; import butterknife.BindView; import butterknife.ButterKnife; import name.caiyao.microreader.R; /** * Created by 蔡小木 on 2016/4/12 0012. */ public class VideoWebViewActivity extends BaseActivity { @BindView(R.id.wv_video) WebView wvVideo; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_webview); ButterKnife.bind(this); String url = getIntent().getStringExtra("url"); WebSettings webSettings = wvVideo.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setUseWideViewPort(true); webSettings.setBuiltInZoomControls(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } webSettings.setAllowFileAccess(true); webSettings.setLoadWithOverviewMode(true); wvVideo.setWebViewClient(new WebViewClient() { @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String urlTo) { //处理自动跳转到浏览器的问题 view.loadUrl(urlTo); return true; } }); wvVideo.setWebChromeClient(new WebChromeClient() { //显示全屏按钮 private View myView = null; private CustomViewCallback myCallback = null; @Override public void onShowCustomView(View view, CustomViewCallback callback) { if (myCallback != null) { myCallback.onCustomViewHidden(); myCallback = null; return; } ViewGroup parent = (ViewGroup) wvVideo.getParent(); parent.removeView(wvVideo); parent.addView(view); myView = view; myCallback = callback; } @Override public void onHideCustomView() { if (myView != null) { if (myCallback != null) { myCallback.onCustomViewHidden(); myCallback = null; } ViewGroup parent = (ViewGroup) myView.getParent(); parent.removeView(myView); parent.addView(wvVideo); myView = null; } } @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.confirm(); return super.onJsAlert(view, url, message, result); } }); wvVideo.loadUrl(url); } @Override protected void onResume() { super.onResume(); try { wvVideo.getClass().getMethod("onResume").invoke(wvVideo, (Object[]) null); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } @Override protected void onPause() { super.onPause(); try { wvVideo.getClass().getMethod("onPause").invoke(wvVideo, (Object[]) null); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } @Override protected void onDestroy() { if (wvVideo != null) { ((ViewGroup) wvVideo.getParent()).removeView(wvVideo); wvVideo.destroy(); wvVideo = null; } super.onDestroy(); } }