1.通过H5页面的超链接尾部信息不同进行跳转(类似于URL拦截器)

例如:控件x的href="http://www.example.com/?menu_id=1",

在代码中添加webview

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast; /**
* Author:JsonLu
* DateTime:2015/8/31 17:52
* Email:luxd@i_link.cc
*/
public class SecoundActivity extends Activity{ private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.webview);
String url = "http://jcut.sinaapp.com/androidjs/second.html?menu_id=1";
this.mWebView.loadUrl(url);
mWebView.setWebViewClient(new MyWebViewClient()); }
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("URL",url);
Intent it = new Intent();
if(url.endsWith("?menu_id=1")){
it.setClass(SecoundActivity.this, MainActivity.class);
startActivity(it);
}else{
Toast.makeText(SecoundActivity.this,"时间:"+System.currentTimeMillis(),Toast
.LENGTH_LONG).show();
}
return true;
}
}
}

2.通过js调用本地类的方法

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast; /**
* Author:JsonLu
* DateTime:2015/8/31 17:52
* Email:luxd@i_link.cc
*/
public class MainActivity extends Activity { private WebView mWebView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.initView();
} @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
private void initView() {
this.mWebView = (WebView) this.findViewById(R.id.webview);
//可以执行javascript
this.mWebView.getSettings().setJavaScriptEnabled(true);
String url = "http://jcut.sinaapp.com/androidjs/";
this.mWebView.loadUrl(url);
//android添加javascript代码,让H5页面能够调用,第二个参数对应的是H5的
this.mWebView.addJavascriptInterface(new PayJavaScriptInterface(), "js");
} private class PayJavaScriptInterface { @JavascriptInterface
public void jumpActivity(int param) {
if (param == 1) {
Intent it = new Intent();
it.setClass(MainActivity.this, SecoundActivity.class);
startActivity(it);
} else {
Toast.makeText(MainActivity.this, "时间:" + System.currentTimeMillis(), Toast.LENGTH_SHORT)
.show();
}
}
}
}

index.html

<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">
<style>
body{width:100%;height:auto;text-align:center;background-color:#eee}
button{width:80%;height:40px;background-color:#36A803;border:1px solid #ddd;border-radius:5px;font-size:18px;color:#fff;margin-top:50px;}
</style>
</head>
<body>
<div id="userinfo"></div>
<button onClick="toActivity(1);">跳转</button>
<button onClick="toActivity(2);">显示时间</button>
<script>
function toActivity(param){
//调用本地的类(js)的jumpActivity()方法;
window.js.jumpActivity(param);
}
</script>
</body>
</html>

second.html

<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">
<style>
body{width:100%;height:auto;text-align:center;background-color:#eee;}
#userinfo{margin-top:50px}
a{text-decoration:none;width:80%;padding:5% 30% 5% 30%;height:40px;background-color:#36A803;border:1px solid #ddd;border-radius:5px;font-size:18px;color:#fff;}
</style>
</head>
<body>
<div style="margin-top:50px">
<a href="http://jcut.sinaapp.com/androidjs/index.html?menu_id=1">跳转</a>
</div>
<div style="margin-top:200px">
<a href="http://jcut.sinaapp.com/androidjs/index.html?menu_id=2">显示时间</a>
</div>
</body>
<html>

H5与Activity之间的通信(调用)的更多相关文章

  1. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Fragment的生命周期和Activity之间的通信以及使用

    Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragme ...

  3. Fragmen和Activity之间的通信--接口和实现的分离(转)

    Fragmen和Activity之间的通信--接口和实现的分离(转) 分类: Android平台     在平板的开发过程中通常都会采用多个Fragment的实现方式,通常有一个为list的Fragm ...

  4. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

  5. Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

  6. 适配器(adapter)与fragment之间、fragment与activity之间的通信问题

    一.适配器(adapter)与fragment之间通信 通过本地广播进行通信 步骤如下 在adapter中代码 声明本地广播管理 private LocalBroadcastManager local ...

  7. Activity之间的通信

    通常Activity之间的通信有三种方式:单向不传参数通信.单项传参数通信和双向通信. 这几种传递方式都需要通信使者Intent.以下将用代码来辅助理解. 1.单向不传递参数通信 public cla ...

  8. Android中BroadCast与Activity之间的通信

    在看本文之前,假设你对于Android的广播机制不是非常了解.建议先行阅读我转载的一篇博文:图解 Android 广播机制. 因为本案例比較简单,故直接在此贴出代码,不做过多的阐述. 先上效果截图: ...

  9. Android中两个Activity之间简单通信

    在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信 ...

随机推荐

  1. lsmod

    http://blog.csdn.net/yuan892173701/article/details/8960607 抽空写下

  2. WEB工程数据库相关安装脚本写作

    1. 数据库oracle安装 2. 数据库用户创建,表空间创建,表创建 #!/bin/bash current_path=`pwd` create_tablespace=${current_path} ...

  3. Dungeon Master(poj 2251)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  4. Ubiquitous Religions(并查集)

    Description There are so many different religions in the world today that it is difficult to keep tr ...

  5. MSP430的IO口模拟I2C总线对AT24C25进行读写程序

    功能: 实现MSP430口线模拟I2C总线协议与24C04通信.                                           ** 描述: 主系统工作时钟为12MHz,I2C工 ...

  6. delphi OnMouseLeave 事件不灵敏及解决之道(使用TrackMouseEvent函数进行加强)

    http://topic.csdn.net/t/20020104/09/456913.html CM_MouseLeave消息好象不太灵敏,当鼠标快速移出窗体时,就收不到这个消息,请问大家有什么好办法 ...

  7. /dev/random和/dev/urandom的一点备忘

    1.  基本介绍 /dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流.很多解密程序与安全应用程序(如SSH Keys, ...

  8. bzoj2400

    首先xor类的题目一定要逐位考虑,因为位位之间是不相互影响的逐位考虑每个点是0还是1,这就转化成了一个这样一个问题对于每个点可以选择属于S集合(这位是0)或T集合(这位是1)某些的点对(一条边的两端) ...

  9. ♫【JS基础】壹零零壹

    如何面试一个前端开发者? function spacify(str) { return str.split('').join(' ') } console.log(spacify('hello wor ...

  10. -_-#【jQuery插件】textSlider 文本滚动

    jQuery.textSlider.js ;(function($) { $.fn.textSlider = function(settings) { settings = jQuery.extend ...