一、需求:
后台加載HTML的包時間太長,太卡,讓把所有的HTML包放到前台;
使用的是file://協議,有些內容和樣式加載不出來,H5那邊說需要用http://協議來加載;
二、處理過程:
安卓最簡單的加載本地HTML的方法是:webView.loadUrl("file:///android_asset/HtmlFileTT/index.html");
但是必須使用http 協議請求資源會有跨域問題,加載不了。
處理方式
try {//本地HTML里面有跨域的請求 原生webview需要設置之后才能實現跨域請求 if (Build.VERSION.SDK_INT >= 16) { Class<?> clazz = webView.getSettings().getClass(); Method method = clazz.getMethod( "setAllowUniversalAccessFromFileURLs", boolean.class); if (method != null) { method.invoke(webView.getSettings(), true); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } webView.loadUrl("file:///android_asset/HtmlFileTT/index.html"); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); } });