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
<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
相关文章推荐
- H5与Android之间的交互
- Android与H5交互(java与js的交互)
- Android与H5交互
- [置顶] Android与H5的交互
- Android和H5之间的交互
- Android与H5的交互
- h5页面与Android原生页面交互
- Android与H5交互(混合开发)
- android 的webView加载h5,和h5的交互(java和JavaScript的交互)
- Android和H5(JS)简单交互
- H5和Android交互
- DCloud H5与Android Native的交互--5+ SDK插件开发
- android webview设置以及与h5交互
- Android与H5交互
- android webview H5开发若干问题之问题三:android和js交互问题
- android 与H5交互之使用GPS定位
- Android与H5的交互问题
- Native和html5的交互(一)h5传数据or触发一个Android的事件
- Android与H5数据交互
- Android h5 交互