WebView优化

使用框架

JS调取原生

1.Android使用如下

webView.registerHandler("registerHandlerFromNative", new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                ...
                }
            }
        });

data参数规则如下

//action  不可为空  方法名  调用原生函数  与  原生函数命名统一
//needCallBack  可为空  默认为0    是否需要原生回调
//message  可为空,  使用场景为显示页面错误等供原生使用
//parameter  可为空  附加参数,用于复杂业务时,向原生传递参数 json结构

例如

{ 
  "action":"executeGetToken",
  "needCallBack":"1",
  "message":"获取Token",
  "parameter":{
    "state":1
  }
}

2.原生注册hander(registerHandlerFromNative)提供方法如下

  • executeGetPhoto(获取图片)
{ 
  "action":"executeGetPhoto",
  "needCallBack":"1",
  "message":"获取照片",
  "parameter":{ }
}
  • executeGetToken(获取token)
{ 
  "action":"executeGetToken",
  "needCallBack":"1",
  "message":"获取token",
  "parameter":{ 
    "tipMessage":"xxx业务需要授权"//用于弹窗展示
  }
}
  • executeInvalidLogin(登录失效)
{ 
  "action":"executeInvalidLogin",
  "needCallBack":"1",
  "message":"登录失效",
  "parameter":{ }
}
  • executeShareWeb(调用分享)
{ 
  "action":"executeShareWeb",
  "needCallBack":"1",
  "message":"调用分享",
  "parameter":{
    "shareUrl":"http://www.baidu.com",
    "shareContext":"shareContext",
    "shareTitle":"shareTitle",
    "imgUrl":"",
 }
}
  • executeShowLoading(显示加载框)
  • executeDismissLoading(隐藏加载框)
  • executeShowLoadFailed(加载失败)
  • executeShowNoNetwork(显示无网络)

原生调取JS

需要js端提供或者共同协商

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从Android4.4系统开始,Chromium内核取代了Webkit内核,正式地接管了WebView的渲染工作。...
    风淋天下阅读 1,536评论 0 1
  • 写这篇文章的主要是因为在实际应用的时候遇到了很多棘手的问题(文章最后部分,交流一下遇到的问题),在这里分享出来让人...
    橘座大人阅读 1,353评论 0 0
  • 1 WebViewClient.onPageFinished(): 不能确保WebView调用这个方法的时候,We...
    shuixingge阅读 879评论 0 0
  • 儿童孤独症也称自闭症,通常在3岁以内起病。该病具体病因不明,可能和遗传、感染、免疫等多因素有关,所以没法预防,最好...
    mengjiao1316阅读 278评论 0 0
  • 也许正是这样的年纪,需要没有负重的去拼博。累了、乏了咬咬牙也就过了,回是想爸妈了,不愿回是想要逃避一个家的琐事,可...
    帅呢子阅读 146评论 0 0