我是靠谱客的博主 矮小大神,最近开发中收集的这篇文章主要介绍android h5交互协议,支持多选图片上传,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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交互协议,支持多选图片上传所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部