package com.example.basecore.widget; import android.content.Context; import android.content.res.Configuration; import android.os.Build; import android.util.AttributeSet; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; /** * x5在10.0版本会崩溃 * 现为普通webview */ public class X5WebView extends WebView { private WebViewClient client = new WebViewClient() { /** * 防止加载网页时调起系统浏览器 */ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }; public X5WebView(Context context) { super(getFixedContext(context)); this.setWebViewClient(client); initWebViewSettings(); } public X5WebView(Context context, AttributeSet attrs) { super(getFixedContext(context), attrs); this.setWebViewClient(client); initWebViewSettings(); } public X5WebView(Context context, AttributeSet attrs, int defStyleAttr) { super(getFixedContext(context), attrs, defStyleAttr); initWebViewSettings(); } private void initWebViewSettings() { WebSettings webSetting = this.getSettings(); webSetting.setJavaScriptEnabled(true); webSetting.setJavaScriptCanOpenWindowsAutomatically(true); webSetting.setAllowFileAccess(true); webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); webSetting.setSupportZoom(true); webSetting.setBuiltInZoomControls(true); webSetting.setUseWideViewPort(true); webSetting.setSupportMultipleWindows(true); webSetting.setLoadWithOverviewMode(true); webSetting.setDatabaseEnabled(true); webSetting.setDomStorageEnabled(true); webSetting.setGeolocationEnabled(true); // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY); webSetting.setPluginState(WebSettings.PluginState.ON); // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH); webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE); webSetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); webSetting.setBlockNetworkImage(false); // this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension } /** * 5.1版本找不到rescourceid 0x2040003 * * @param context * @return */ public static Context getFixedContext(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return context.createConfigurationContext(new Configuration()); } else { return context; } } }