古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Android 中加载本地Html 跨域问题,http协议允许加载相关的知识,希望能为你提供帮助。
一、需求:后台加载html的包时间太长,太卡,让把所有的HTML包放到前台;
使用的是file://协议,有些内容和样式加载不出来,H5那边说需要用http://协议来加载;
二、处理过程:【Android 中加载本地Html 跨域问题,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);
}
});
推荐阅读
- Android 开发 VectorDrawable 矢量图 用一张矢量图实现按下改变颜色的效果
- 提交APP到三星应用市场一直提示不符合 Galaxy特色体验的类别条件
- Find if all numbers appear an even number of times
- 安卓到底是不是Linux
- 无法加载文件 C:UsersAdministratorAppDataRoamingpm sc.ps1,因为在此系统上禁止运行脚本
- 机器学习实战基础(十八)(sklearn中的数据预处理和特征工程特征选择 之 Wrapper包装法)
- spring设计模式之applicationContext.getBean("beanName")思想
- Android Back Home键监听
- 《全能去水印》APP详细介绍和下载