本帖最后由 小鲁哥哥 于 2020-1-8 17:07 编辑
最近在研究js和android之间的互调,正好就把很多问题统一整理下,慢慢看吧
先说下,我这里用的框架时JSBridge,用法很简单,自己参照下demo估计都能6得飞起,
关于js和原生互相调用,先看下官方的文档,然后在看下这个框架怎么用,其实很简单的~~ 关于让android相应js里面的alert和console,也很简单,就是实现webchromclient里面对应的方法,举一反三,不多做说明,我就直接上图
这样就能让js的alert和console在android上相应,这样在调试的时候也就变的很简单了
接下来就是跨域问题和解决方案
先说下跨域吧,就是报下图的错误,至于什么时跨域,参考这边文章咯: http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html
解决方案:
1.服务器端添加header,这种方式不安全(强烈的不推荐)
2.这种方式是在前端做实现,是通过反射调用webview得setAllowUniversalAccessFromFileURLs方法,传一个true就好了
[Java] 纯文本查看 复制代码 try {
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的其他问题,碰到的过程种会继续补充,当然了,最好时先参考android sdk api,很多东西其实在api中都已经写的特别详细咯~~~
|