A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 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中都已经写的特别详细咯~~~


3 个回复

正序浏览
多谢分享
回复 使用道具 举报
好贴,值得收藏!
回复 使用道具 举报

回帖奖励 +1

先收藏了再说
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马