WebView 链接(或按钮)向 Activity 跳转的几种实现方式

第一种 ,写一个 JavaScriptinterface 类,里面实现WebView向Activity 页面跳转

public class JavaScriptinterface {

	Activity mActivity;

	public JavaScriptinterface(Activity mActivity) {
		this.mActivity = mActivity;
	}

	/** 与js交互时用到的方法,在js里直接调用的 */
	public void startActivity() {
		Intent intent = new Intent();
		intent.putExtra("fromWhich", "webViewUrl");
		intent.putExtra("replyID", "replyID");
		intent.setClass(mActivity, Testactvity.class);
		mActivity.startActivity(intent);
	}
}

而webView 实现 myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");  添加 这个类,表情为 android,在相应的网页中链接或按钮添加相应JS

function startActivity() {
	android.startActivity();
	 }

JavaScriptinterface  的 startActivity  与 JS中的方法必须一致

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript">
function startActivity() {
	android.startActivity();
	 }
</script>

</head>
<body>
<a href="#" id="a1" name="a1" onClick="startActivity()">button</a>
<input type="button" value="Say hello"
	 onClick="startActivity()"/>

</body>

</html>

完整Demo下载: http://download.csdn.net/download/jia635/8766869

方式二:

通过在 Activity 中 的  <data android:scheme="topicid" />  scheme 去实现,同时这种方式可对外开发,即别的APP中遵循这个 scheme 规则,即可打开注册scheme 的Activity

<activity

android:name="com.example.webviewtest.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="topicid" />

</intent-filter>

</activity>

在WebView 的主要代码如下 <a href="topicid://aa.bb:80/test?p=12&d=1" id="a1" name="a1"  >button</a>    超连接和scheme 一直 ,然后通过 Intent 传值可以通过  topicid://aa.bb:80/test?p=12&d=1
字段去截取想要的属性值。 这种方式 不能重写 WebViewClient  方法,不然点击就变为 像这个 topicid://aa.bb:80/test?p=12&d=1 Url 跳转。

方式三:

通过重写 WebViewClient  ,在 WebViewClient  中 有shouldOverrideUrlLoading(WebView view, String url)  的方法,可以在里面定义 Activity的跳转 ,通过 自定义超链接的Url 格式去进行不同的操作,如:http://www.mofangge.com 为 网页跳转 , blogJump://mofangge.com  链接形式为 向Activity 跳转,通过 url  头部 进行 loadUrl 还是startActivity
的跳转判断。

Demo下载:http://download.csdn.net/detail/jia635/8767179

时间: 2024-10-03 03:59:10

WebView 链接(或按钮)向 Activity 跳转的几种实现方式的相关文章

安卓Activity跳转的几种方式

本文转载于http://blog.sina.com.cn/s/blog_5140274d0100q4j7.html,本人仅作为学习交流之用,请大家尊重原创. 第一种方式,用action来跳转. 1.使用Action跳转,如果有一个程序的 AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Action匹配.如果这个IntentFilter段中没有定义 Type,Category,那么这个 A

监听按钮的点击事件的三种实现方式

1.匿名内部类监听按钮点击事件 Button buttonup=(Button)findViewById(R.id.btn_signup); //找到需要的Button按钮,转换成Button类型 buttonin.setOnClickListener(new View.OnClickListener() { //设置Button的监听器 @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"点击了登录

辛星与您解读PHP页面跳转的几种实现方式

由于页面跳转的使用是非常频繁的,因此这里给出几种方式,其实我想我并没有归纳全,毕竟函数那么多,要一下想起来还是特别麻烦的,于是,想到哪里就记到哪里把,等着以后再整理汇总. 第一种方式就是使用header()函数,它是PHP中进行页面跳转非常简便的一种方法,它的实现机制就是把HTTTP协议表头header输出到浏览器,因此,在使用该函数和使用setcookie函数一样,不能有任何的输出,否则无法执行,它的函数原型如下: void header (string string [,bool repla

Android Activity跳转flag

参考自http://my.oschina.net/u/1244156/blog/228483 关于几个flag 1.FLAG_ACTIVITY_NEW_TASK: 当进行一个activity跳转,A->B,若跳转的activityB,在系统内无其(activityB)的task(亦即属于该activity的应用栈),则新建一个task:若已经有该activityB的task,则不再新建task: 若无包含该flag,则系统则不创建新task,该activity将放在调用者的task里 下图比较生

Android之Activity跳转

简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a src="..."></a>的链接标签,当我们点击这个链接的时候就会发送跳转.这是因为浏览器会自动监听这个链接是否被点击,如果被点击那个浏览器自己执行跳转动作.但是在Android中就没这么简单,程序员需要自己去监听某个事件,当这个事件发生的时候,需要自己指定目的Activi

android 15 activity跳转

从一个屏幕跳到另一个屏幕,一个activity跳转到另一个activity,Intent类用于组件之间传递数据和跳转,组件包括不仅activity. package com.sxt.day04_01; import com.sxt.day04_01.entity.User; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUt

android activity 跳转传值问题研究

Java代码   intent = new Intent(); intent.setClass(LoginActivity.this, RegActivity.class); Java代码   startActivity(intent); 因为刚学android.所以在很多的时候.不知道从什么地方下手! 可是,我曾经记得我恩师说过这么一句话! 不管那个编程语言.能把一个简单的登陆做的好!算是已经基本入门了! 所以我测试做了一个android的登陆! 可是在运行中!我想弄一个按钮,为"注册&quo

安卓fragment跳转activity,fragment跳转fragment,activity跳转fragment

Activity中加载不同的fragment  / Fragment中加载不同的fragment 主Activity中加载(切换)多个fragment(也可以理解为activity跳转fragment)或主fragment中加载(切换)多个fragment Activity布局中要有一个fragment布局空间,比如id名为main_ FrameLayout 写两个fragment类继承自fragment,比如 fragmentaextends Fragment (这个里面加载你的view和写你

Github项目解析(九)--&gt;实现Activity跳转动画的五种方式

转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式.在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight()方法获取组件的宽度和高度其结果都是0,为什么会出现这个问题呢? 其实看过我以前写过的Activity启动流程  Activity布局加载流程  Activity布局绘制流程  的同学应该对Activity的启动流程和其布局加载绘制流程不陌生,Activity的启动