android与H5的交互

一.在开发中对于经常需要改动的页面,我们会把它做成H5页面,在APP中以WebView的形式加载。这样就避免了Native原生页面每次修改。

H5的好处是开发周期相对于原生页面要短,其缺点就是加载速度相对于原生的要慢。

H5页面在android中生成的步骤为:

 1.从服务器端动态获取数据并拼接成一个HTML;

 2.服务器返回给客户端WebView;

 3.在WebView中解析并生成这个HTML。

实际项目中对于一些界面可做两套界面,原生的一套和H5的一套这样可以适应一些急于改变的需求。

实现方式可以:

 1.需要做一个后台,根据版本进行配置每个界面是使用原生还是H5页面的;

 2.在启动app时,从后台协议中获取对应使用的原生的还是H5的;

 3.在代码中页面间要实现松耦合。

二.android与H5之间的互相调用原理:

 1.实现android操作H5页面:


我的实现是点击button改变webview的背景颜色,相当于点击button传递参数到H5中function方法进行颜色的设置:

 H5的代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="{CHARSET}">
		<title>java调H5</title>
	</head>
	<body>
		<script type="text/javascript">
			function changeColor (color){
				document.body.style.backgroundColor=color;
			}
		</script>
		<script type="text/javascript">
			document.write("androidcallH5")
		</script>
	</body>
</html>
 android中的代码实现为:

mWv.getSettings().setJavaScriptEnabled(true);   //开启JavaScript的使能
mWv.loadUrl("file:///android_asset/JavaCallH5.html");       //通过loadUrl加载html页面
 case R.id.btn1:
    {
      String color="#00ee00";
      mWv.loadUrl("javascript:changeColor('"+color+"');"); //loadUrl里面加上javascript的function+所传的参数值
     }
     break;
 2.H5调用android中的方法并传递参数:

使用到的是addJavascriptInterface这个方法:

具体这个方法的源码中有这样一个例子

class JsObject {
       {@literal @}JavascriptInterface
       public String toString() { return "injectedObject"; }
     }
      webView.addJavascriptInterface(new JsObject(), "injectedObject");
方法中的参数解释如下:

@param object the Java object to inject into this WebView's JavaScript
              context. Null values are ignored.
@param name the name used to expose the object in JavaScript
    public void addJavascriptInterface(Object object, String name) {  //object是自己所创建的类,name是H5中所设置的function的别名
        checkThread();
        mProvider.addJavascriptInterface(object, name);
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值