Webview 与h5的交互

步骤: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才能调的动安卓的方法

时间: 2024-08-11 03:25:22

Webview 与h5的交互的相关文章

webview与h5交互

android webview与H5的交互 方法无响应 @SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" }) protected void onStart() { // TODO Auto-generated method stub super.onStart(); webView = (WebView) findViewById(R.id.webView); String url = ge

webview和H5交互

由于H5的灵活多变,动态可配的特点,也为了避免冗长 的审核周期,H5页面在app上的重要性正日益突显. iOS应用于H5交互的控件主要是UIWebView及WKWebView WKWebView是14年随iOS8推出的,很好的解决了UIWebView加载速度慢,内存占用大的问题 WebViewJavaScriptBridge是一款轻量级的框架,使用它结合wkwebview能十分方便的实现源生与H5的交互 webviewJavaScrptBridge的基本使用 1.初始化需bind视图 [WebV

iOS原生App与H5页面交互笔记

iOS原生App与H5页面交互笔记 字数390 阅读2204 评论1 喜欢25 最近在做一个项目用到了原生App与H5交互,之前有做过简单的H5页面直接调用原生方法的例子,就是利用UIWebView中的代理方法 //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigatio

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架 前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCore框架主要是用来实现iOS与H5的交互.当然了,最早我曾经写过iOS浅谈webView的JS一种用法.(去掉web显示页的广告),这种算得上最简单的iOS与H5的交互了.现在混合编程越来越多,H5的相对讲多,所以研究J

Hybrid APP之Native和H5页面交互

Hybrid APP之Native和H5页面交互原理 Hybrid APP的关键是原生页面与H5页面直接的交互,如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用H5页面的方法或者通知H5页面回调 在Hybrid APP中,原生与H5的交互方式在Android和iOS上的实现是有异同的,原因是Android.iOS的通信机制有所区别,下面介绍原生和H5相互调用的方法 Native与H5交互的两种方式 原生和前端的交互有两种方式:url scheme以及Jav

安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl(&quot;javascript:**&quot;);

近期做一个项目需要把一个 服务支持的界面用webview来显示..呀 html白雪了js更是一样啥也不会,相信很多初学屌丝员跟我一样,, html开发工具都不知道怎么写..哈哈哈.....现在把做完的结果分享一下先上图了 ,, 这是从项目中特意分离出来的demo这里之上一些关键代码 源码下载地址  http://download.csdn.net/download/yung7086/7554309 步骤 首先在assets目录下建一个html文件 <!DOCTYPE html PUBLIC &quo

Android WebView与服务端交互Demo

使用WebView可以让Android端的开发工作大量减少,原因是在服务端可以为其做一定的工作,下面这个小Demo就实现了从Android客户端与服务端的交互.我这里客户端使用的工具是Eclipse,服务端使用MyEclipse. 实现效果图: 客户端: 点击登录按钮后,页面跳转,而在服务端Console中看到如下(只看最后一行即可): 可以看到服务端收到了客户端发过来的用户名:yao. 源代码: 客户端: activity_main: <RelativeLayout xmlns:android

swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析

showWebView.dataDetectorTypes = .None //swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析 其UIDataDetectorTypes属性: static var PhoneNumber: UIDataDetectorTypes { get } // Phone number detection static var Link: UIDataDetectorTypes { get } // URL detection static v

webview和H5 清除缓存和缓存文件删除。

webview和H5 清除缓存和缓存文件删除. 缓存请看:http://blog.csdn.net/menglele1314/article/details/45717531 import java.io.File;     import android.app.Activity;  import android.graphics.Bitmap;  import android.os.Bundle;  import android.util.Log;  import android.view.V