您的位置:首页 > 移动开发 > Android开发

Android与H5交互

2016-11-01 15:47 267 查看
H5的代码:

<html>

<head>

<meta charset="UTF-8">

<title>交互Demo</title><meta content="initial-scale=1.0,user-scalable=no,maximum- scale=1,width=device-width" name="viewport">

</head>

<body>getUserinfo:

<br><input value="立即报名" type="button" onClick="baoming();" />

<br><input value="详细信息" type="button" onClick="baoming1();" />

<br><input value="你好" type="button" onClick="baoming2();" /><br>

<script>

/*var rs=window.om.getUserinfo();

document.getElementById('userinfo').innerHTML=rs;*/

var rs=window.demo.getUserinfo();

var obj = eval ("(" + rs + ")");

if(obj.status){

document.getElementById('userinfo').innerHTML=obj.data.nickname;

}

function baoming(){

if(window.demo.needLogin()){

location.href='http://www.cnblogs.com/greatverve/archive/2012/03/08/android-assets.html';

}

}

function baoming1(){

if(window.demo.getUserinfo()){

location.href='http://www.cnblogs.com/greatverve/archive/2012/03/08/android-assets.html';

}}function baoming2(){

if(window.demo.getData("红红火火")){

location.href='http://www.cnblogs.com/greatverve/archive/2012/03/08/android-assets.html';

}

}

</script></body>

</html>

android 端需要写的代码:

在XML 布局声明一个WebView(这里就不多讲)

如果android要与H5进行交互,我们必须设置可以使用JavaScript(无论是H5调Android还是Android调H5都需设置) 代码如下:

控件名.getSettings().setJavaScriptEnabled(true);

android要H5交互主要分为两种:(Android调H5和H5调用Android)

一、H5调用Android

通过web_main.addJavascriptInterface让H5调用Android的方法,其中的两个参数的意思分别是:

第一个参数:定义类的实例化 (这个类里面可以创建n个方法,但每个方法上面都必须加上@JavaScriptInterface 因为在Android 4.0后不加这个注解会调不到这个方法)

第二个参数:自定义名字,让H5来调用安卓的方法

代码如下:web_main.addJavascriptInterface(new PayJavaScriptInterface(), "demo");

在H5中调用安卓的方法是:window.第二个参数(自定义名字).方法名

案例如下:

window.demo.needLogin()

二、Android调H5

格式如下:控件名.loadUrl("javascript:方法名")

代码如下:web_main.loadUrl("javascript:getData()");

声明:Android 调用H5 必须在主线程中调用,

方法1:

使用Handler代码如下:

//主线程

Handler handler = new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what){

case 1:

web_main.loadUrl("javascript:baoming3()"); //aa是js的函数test()的参数

break; }

}

};

//发送消息到主线程的方法

Message msg = handler.obtainMessage();

msg.what = 1;

handler.sendMessage(msg);

方法2:控件名.post(实例化线程)

web_main.post(new Runnable() {

@Override

public void run() {

web_main.loadUrl("javascript:baoming3()"); //aa是js的函数test()的参数

}

});

对了,当然我们还需要在清单文件中加请求权限:android.permission.INTERNET
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: