步骤: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 端需要写的代码
 
1:在XML 布局声明一个WebView
2:通过 loadUrl 加载本地文件或者网络文件
3:设置可以使用JavaScript,代码如下:
web_main.getSettings().setJavaScriptEnabled(true); //加上这句话才能使用javascript方法
具体安卓调用H5 的格式是: web_main.loadurl("javaScript:方法名");(方法名来自于H5 的方法名)
注意:安卓调用H5必须在主线程进行.
 
H5 调用安卓的方法::web_main.addJavascriptInterface(new PayJavaScriptInterface(), "demo");
后面有个参数:第一个是自定义类的实例化,第二个参数是自定义的名字(名字随便起),这个字段是为了让H5调用安卓的时候用的,//H5 调用Android 的格式 Window.第二个参数.方法名
4:定义一个类,类名叫PayJavaScriptInterface,里面有三个方法:分别是:getUserinfo,needLogin,getData,代码如下:
 
final class PayJavaScriptInterface {
 
 
PayJavaScriptInterface() {
 
}
 
@JavascriptInterface
 
public String getUserinfo() {
 
 
Toast.makeText(getApplicationContext(),"报名",Toast.LENGTH_LONG).show();
 
return "dd";
}
 
@JavascriptInterface
public boolean needLogin() {
 
Toast.makeText(getApplicationContext(),"登陆",Toast.LENGTH_LONG).show();
 
return false;
}
 
@JavascriptInterface
public void getData(String name){
 
Toast.makeText(getApplicationContext(),name,Toast.LENGTH_LONG).show();
}
 
}
 
//注意 自定义类,类名自己起,类里面的方法要与H5里面调用的方法名一致(可以和H5商量着起)
5:通过web_main.addJavascriptInterface让H5调用Android的方法,其中的两个参数的意思分别是:
第一个参数:定义类的实例化
第二个参数:自定义名字,让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 与H5 交互最主要有俩方法;
1:控件名.getsetting.setJavaScriptEnable设置为true
这个时候我们就能安卓调用J5的方法,
安卓调用H5 只需要一句话,
控件名.loadurl("javaScript:方法名"),但是这句话必须在主线程调用
 
第二个设置是 H5调用安卓的时候需要设置的,
是控件名.addJavaScriptInterface(),里面有俩参数,第一个参数是H5调用我们安卓方法需要封装的一个类的实例化,第二个参数是我们自定义的名字,H5调用安卓的时候用的,因为H5调用安卓的时候格式是 window.第二个参数.第一个类里面的方法名,但是里面类里面的方法方面必须加一句话 @javaScriptInterface 这个在安卓4.4以后H5才能调的动安卓的方法

Webview 与h5的交互的更多相关文章

  1. Android中WebView与H5的交互,Native与JS方法互调

    项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...

  2. iOS webView与H5的交互(返回页面的处理)

    摘自:http://blog.csdn.net/qq_29284809/article/details/50548413 调用 H5页面的同名返回方法(必须保证名字一致)!!!

  3. webview和H5交互

    由于H5的灵活多变,动态可配的特点,也为了避免冗长 的审核周期,H5页面在app上的重要性正日益突显. iOS应用于H5交互的控件主要是UIWebView及WKWebView WKWebView是14 ...

  4. iOS原生APP与H5+JS交互////////////////////zzzz

    原生代码中直接加载页面 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView ...

  5. Hybrid APP之Native和H5页面交互原理

    Hybrid APP之Native和H5页面交互原理 Hybrid APP的关键是原生页面与H5页面直接的交互,如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用 ...

  6. android:如何通过chrome远程调试APP中的webView的h5代码

    今天出现一个问题,在老板的Mate9 Pro上,我们APP的所有H5页面都是一片空白,但是在其他手机上都是好的,那么我们就怀疑是h5报错了,但是到底是什么错,无法得知,所以就想要可以像在pc的chro ...

  7. 浅谈 iOS 与 H5 的交互- JavaScriptCore 框架

    前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCo ...

  8. Android WebView与H5联调技巧

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/78 背景: 突然想写一篇关于Android WebView ...

  9. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

随机推荐

  1. Scrum Meeting 3-20151203

    任务安排 姓名 今日任务 明日任务 困难 董元财 请假(明天是编译截至最后一天) 学习上拉加入新的listview 无 胡亚坤 请假(明天是编译截至最后一天) 设计优化聊天页面 无 刘猛 请假(明天是 ...

  2. First Day

    以后这里将记录我的成长脚步啦~~ 欢迎吐槽 作为一个大三即将面临找工作的学渣,心中真的很焦急 要好好学前端!! Fighting~

  3. SaltStack实战

    SaltStack实战 #安装 安装注意几点 python-libs-2.6.6-64.el6.x86_64 conflicts with file from package python-2.6.6 ...

  4. CSS3中的Transition属性详解

    w3c标准中对CSS3的transition这是样描述的:“CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...

  5. Naive Bayes理论与实践

    Naive Bayes: 简单有效的常用分类算法,典型用途:垃圾邮件分类 假设:给定目标值时属性之间相互条件独立 同样,先验概率的贝叶斯估计是 优点: 1. 无监督学习的一种,实现简单,没有迭代,学习 ...

  6. SiteFactory简单配制

    进入后台管理: 指向节点,有点节点ID,这个节点ID就是siteFactory根据规则能生成的页面,页面更新网址: http://www.elexcon.com/Category_节点ID/Index ...

  7. 樱花漫地集于我心,蝶舞纷飞祈愿相随 発生:genesis 发生:genesis

    朱念齐,学号160809404(这些其实并没有什么乱用)唉( ̄y▽ ̄)~* 正文 鬼族后裔,原是露格尼卡王国的子民,在王立比布利亚学园任职魔法使拥有分别为: 拥有书库: 书库:傲慢(Superbia) ...

  8. Cognition math based on Factor Space (2016.05)

    Cognition math based on Factor Space Wang P Z1, Ouyang H2, Zhong Y X3, He H C4 1Intelligence Enginee ...

  9. user-select : 保护版权内容的简单方案

    有的适合我们需要保护我们页面的内容,为了版权或者安全等原因,这个适合我们可以使用 user-select 这个CSS属性,简单易用. 嗯,这个属性不麻烦,而且也不是 CSS 3 / CSS 4 的新属 ...

  10. 更换内核后重编virtualbox内核模块

    这些天编译了一个4.1.15内核,因此vb原来的模块就不能用了,因此要重新编译(当然,reinstall也可以,觉得大动干戈,不符合个人做事风格) 如果不重编运行会有如下错误提示: # virtual ...