Android和H5交互

5 篇文章 0 订阅

作者: 燕歆波
导读: android与h5交互

1、首先设置WebView属性:

		mWebview = new WebView(getApplicationContext());
        mWebSettings = mWebview.getSettings();
        mWebview.setPadding(0,0,0,0);
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(false);//设置js可以直接打开窗口,如window.open(),默认为false
        mWebSettings.setJavaScriptEnabled(true);//是否允许JavaScript脚本运行,默认为false。设置true时,会提醒可能造成XSS漏洞
        mWebSettings.setSupportZoom(true);//是否可以缩放,默认true
        mWebSettings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
        mWebSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
        mWebSettings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
        mWebSettings.setAppCacheEnabled(true);//是否使用缓存
        mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储 一定要开启缓存,不然点击事件无法响应
        mWebSettings.setLoadsImagesAutomatically(true); // 加载图片
        mWebSettings.setMediaPlaybackRequiresUserGesture(false);//播放音频,多媒体需要用户手动?设置为false为可自动播放
        fl_layout.addView(mWebview);
        //加载本地网页
        mWebview.loadUrl("file:///android_asset/index.html");
        //设置js调用android的对象和别名
        mWebview.addJavascriptInterface(new JSInterface(),"JSInterface");

2、接收js传入的信息,方法必须加上@JavascriptInterface注解

public class JSInterface{

        /**
         * js调用android结束();方法
         * @param type html传给android的参数,来判断是否结束了
         */
        @JavascriptInterface
        public void postMsg(final String type) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    MobclickAgent.onEvent(WebViewActivity.this,FinalTags.TJ_GAMEOVER);
                    WebViewActivity.this.showAD(true);
                }
            });
        }
    }

3、编写Html网页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

		<meta http-equiv="Expires" content="0">
		<meta http-equiv="Pragma" content="no-cache">
		<meta http-equiv="Cache-Control" content="no-store,no-cache">
		<meta name="Handheldfriendly" content="true">
		<meta name="viewport" content="width=100%; initial-scale=1.0; user-scalable=yes">
		<meta name="robots" content="all">
		<meta name="keywords" contect="doodle, mobile, doodlemobile, game, games">
		<meta name="description" content="Make People's Mobile Life More Connected Through Games.">
		<title>jsandroid_test</title>

		<script type="text/javascript" language="javascript">
			//点击按钮调用android方法
			function showHtmlcallJava() {
				window.JSInterface.postMsg("结束");
			}

			//android调用html的方法
			function reActivity(param) {
				document.getElementById("id_input2").value = param;
			}
		</script>
	</head>

	<body>
		<br />
		<br />
		<br />
		<br />
		<br />
		<!--点击调用android的方法-->
		<input type="button" value="HtmlcallJava" onclick="showHtmlcallJava()" />

		<input id="id_input2" style="width: 90%" type="text" value="null" />

	</body>

</html>

注意:

	   1、mWebview.addJavascriptInterface(new JSInterface(),"JSInterface");此方法传入了一个别名JSInterface,别名可以自定义,但是Html必须通过此别名调用传入的对象(new JSInterface())的方法,

	   2、html调用的方法名必须和JSInterface类中的方法名一致,否则无法成功

      3、android端接收数据的方法(此处为postMsg方法)运行在子线程,如果需要刷新UI,请在主线程中进行!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值