概述
H5交互有以下二种:
1) Android(Java)调用HTML中js代码
2) HTML中js调用Android(Java)代码
协议定义:
1.App在webview里注入一个名为“js_from_app” JS对象。
2 因为交互只响应不回复。
2.1 Html调用app数据时,调用名为htmlCallApp(String srcData)
2.2 app调用 html时,调用名为appCallHtml(String srcData)
3 srcData为请求参,格式定义json格式如下:
{
"state": {
"code": 1,
"requestID": "id1"
},
"data": {
}
}
例:html要app获取一张图片时
1.1Html就通过window.js_from_app.htmlCallApp(srcData)调用app方法,
srcData如下:(10001为代号:html要获取一张图)
{
"state": {
"code": 10001,
"requestID": "id1"
}
}
1.2然后等待app处理事件后调用
String srcData="json数据"。
WebView.loadUrl("javascript: appCallHtml('"+srcData+"')"),也可以通过WebView.evaluateJavascript(),
srcData格式为:
{
"state": {
"code": 10001,
"requestID": "id1"
},
"data": {
"pic":”asdfa32542” // base64位图
}
}
或者:
{
"state": {
"code": 10900, // 处理过程有其他问题10900
"requestID": "id1"
"msg": "应用无权限获取系统图片"
}
}
在html里js定义中触发方法:
function appCallHtml( param ){
document.getElementById("id_input").value = param;
}
然后value 值就为srcData内容
如上同理定义不同的h5需要的数据交互:
需要定位信息时,代号为10002,htmlCallApp的srcData为:
{
"state": {
"code": 10002,
"requestID": "id2"
}
}
为什么要定义协议?
传统的交互就是需要一个功能就定义多一个app方法,h5也会多一个js方法,如基于协议就只增加code码,如果h5页面太多要交互或者功能太多,利用工厂模式,协议不会显得臃肿;
根据协议还能支持多图片选择,html发起一个code码请求app选择多图片,app用原生实现多图片选择,再把图片转换base64位返回给html;
通过协议中的requestID可以同时处理多个html请求。
最后
以上就是矮小大神为你收集整理的android h5交互协议,支持多选图片上传的全部内容,希望文章能够帮你解决android h5交互协议,支持多选图片上传所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复