前言 :

各位同学大家好 ,最近有段时间没有给大家更新文章。最近事情也比较多哈。年底了嘛毕竟要坚守岗位 做好收尾工作。今天要分享是Android WebView 加载本地html跨域问题 。那么废话不多说,我们正式开始

问题背景

今天接到一个需求 项目组这边用laya 开发一个app 最后编译成js 本地资源然后安卓这边 加载本地的html入口来实现 有些同学会说这么很简单 我们初始化webview 然后 加载本地路径的html 就行了 但是本地的js里面带着http的请求 这时候就出现跨域名访问的问题

Android WebView 加载本地html跨域问题_html

具体解决 我们就需要

try {//本地HTML里面有跨域的请求 原生webview需要设置之后才能实现跨域请求
if (Build.VERSION.SDK_INT >= 16) {
Class<?> clazz = mwebview.getSettings().getClass();
Method method = clazz.getMethod(
"setAllowUniversalAccessFromFileURLs", boolean.class);
if (method != null) {
method.invoke(mwebview.getSettings(), true);
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

通过反射调用webview内部方法 设置setAllowUniversalAccessFromFileURLs 为true 来处理跨域问题即可

最后总结

安卓用到webview的场景还是很多的 这里我只是做一个bug搜集 希望有更多的网友能把自己平时遇到的整理发布出来 这样我们在下次解决BUG的时候就会得心应手。最后祝愿各位网友和同学 2022年心想事成 往事如意 我要继续工作了 ,希望我的文章能帮助到各位解决问题 ,以后我还会贡献更多有用的代码分享给大家。各位同学如果觉得文章还不错 ,麻烦给关注和star,小弟在这里谢过啦!

参考地址:

​https://www.jianshu.com/p/833ac6734817​