package com.dayu.pipirrapp.utils; import android.util.Log; import android.webkit.ConsoleMessage; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import com.dayu.pipirrapp.bean.db.CenterPointBean; import com.dayu.pipirrapp.bean.db.MarkerBean; import java.util.List; /** * author: zuo * Date: 2024-09-03 * Time: 15:43 * 备注:web相关的公共方法 */ public class WebViewUtils { private static String TAG = "WebViewUtils"; /** * 初始化web设置 * * @param mWebView * @return */ public static WebView initWebView(WebView mWebView) { // getActivity().getWindow().setFlags( // WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, // WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); // WebView 配置 WebSettings webSettings = mWebView.getSettings(); // 生命周期 // 前进后退 if (mWebView.canGoBack()) { mWebView.goBack(); } if (mWebView.canGoForward()) { mWebView.goForward(); } // 缓存相关 mWebView.clearCache(false); // 清除缓存 // mWebView.clearHistory(); // 清除历史 // mWebView.clearFormData(); // 清除表单数据 webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);// 设置缓存模式 webSettings.setDatabaseEnabled(true); webSettings.setDomStorageEnabled(true);//开启DOM缓存,关闭的话H5自身的一些操作是无效的 //启用 Service Workers WebView.enableSlowWholeDocumentDraw(); WebView.setWebContentsDebuggingEnabled(true); // 缓存模式 // LOAD_DEFAULT: 默认,根据 cache-control 决定是否从网络上取数据 // LOAD_NORMAL: API level 17 中已经废弃, 从API level 11开始作用同 LOAD_DEFAULT 模式 // LOAD_CACHE_ELSE_NETWORK: 只要本地有,无论是否过期,或者 no-cache,都使用缓存中的数据 // LOAD_NO_CACHE: 不使用缓存,只从网络获取数据 // LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 // js 相关 webSettings.setJavaScriptEnabled(true); // 支持 js。如果碰到后台无法释放 js 导致耗电,应在 onStop 和 onResume 里分别设成 false 和 true // mWebView.addJavascriptInterface(new WebAppInterface(this), "android"); // js 接口 // webSettings.setPluginsEnabled(true); // 支持插件 // 设置自适应屏幕,两者合用 webSettings.setUseWideViewPort(true); // 将图片调整到适合 WebView 的大小 webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小 // 缩放操作 webSettings.setSupportZoom(true); // 支持缩放,默认为 true webSettings.setBuiltInZoomControls(true); // 设置内置的缩放控件,若为 false,则该 WebView 不可缩放 webSettings.setDisplayZoomControls(false); // 隐藏原生的缩放控件 webSettings.setLoadsImagesAutomatically(true);//预加载 //添加访问权限 webSettings.setAllowFileAccess(true); webSettings.setAllowFileAccessFromFileURLs(true); webSettings.setAllowUniversalAccessFromFileURLs(true); //webView弹JsAlert mWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { Log.d("WebView", consoleMessage.message() + " -- From line " + consoleMessage.lineNumber() + " of " + consoleMessage.sourceId()); return true; } }); return mWebView; } /** * bean转json * * @param markerBeans */ public static String beanToJson(List markerBeans) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("["); for (int i = 0; i < markerBeans.size(); i++) { MarkerBean markerBean = markerBeans.get(i); stringBuilder.append("["); stringBuilder.append(markerBean.getLng()); stringBuilder.append(","); stringBuilder.append(markerBean.getLat()); stringBuilder.append(",\"" + markerBean.getName() + "\"]"); if (i != markerBeans.size() - 1) { stringBuilder.append(","); } } stringBuilder.append("]"); return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\""); } }