WebView 联系(要么button)至 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。在对应的网页中链接或button加入对应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
版权声明:本文博主原创文章,博客,未经同意不得转载。
WebView 联系(要么button)至 Activity 跳跃在几个方面的更多相关文章
- Android Studio同时监听多个Button实现activity跳转
MainActivity.java: package com.example.test; import android.content.Intent; import android.os.Bundle ...
- 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃
(1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...
- WebView 的使用----android和html的交互
一.主布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- Android WebView 开发教程
声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...
- Android控件之WebView
如何在Android应用中打开Web网站呢?谷歌为我们提供了解决方案,现在就让我们一起看一下WebView控件吧. 为了方便总结,就以实现下面这个效果为主线,进行总结: 首先我们先看一下它的布局文件吧 ...
- HTML5学习总结-10 Android 控件WebView显示网页
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient 1)setWebClient: ...
- Android WebView常见问题及解决方案汇总
Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是 ...
- android webview 底层实现的逻辑
其实在不同版本上,webview底层是有所不同的. 先提供个地址给大家查:http://grepcode.com/file/repository.grepcode.com/java/ext/com.g ...
- Android之 -WebView实现离线缓存阅读
前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...
随机推荐
- [TypeScript] Using Interfaces to Describe Types in TypeScript
It’s easy to pass the wrong value to a function. Typescript interfaces are great because they catch ...
- bootstrap课程3 bootstrap中常用的排版样式有哪些
bootstrap课程3 bootstrap中常用的排版样式有哪些 一.总结 一句话总结:bootstrap里面对常用表情比如p.h1.code等html中的常用表情都修改了样式,照着手册用就好,样式 ...
- js实现点击不同的按钮后各自返回被点击的次数
js实现点击不同的按钮后各自返回被点击的次数 一.总结 1.注意:返回的不是三个按钮总的点击数,而是每一个的 2.用全局变量的话每一个按钮要多一个函数,用闭包就很方便 二.js实现点击不同的按钮后各自 ...
- Java的压缩、解压及压缩加密、解密解压 样例
为了节约带宽.加快传送速度,http协议支持gzip的压缩,但假设我们的app与后台不是通过http协议通讯的.那么压缩.解压这个流程须要自己写.以下给出compress和decompress的代码: ...
- 【LeetCode-面试算法经典-Java实现】【096-Unique Binary Search Trees(唯一二叉搜索树)】
[096-Unique Binary Search Trees(唯一二叉搜索树)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given n, how many s ...
- Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Crazy Bobo Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Tota ...
- php实现矩形覆盖
php实现矩形覆盖 一.总结 很简单的斐波那契数列 二.php实现矩形覆盖 题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总 ...
- 【2037】利用字符串处理,输出x+y的结果
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 输入两个整数x,y输出它们的和.(0<=x,y<=10的100次幂) [输入] 共2行: ...
- 阿里云服务器安全设置 分类: B3_LINUX 2014-07-24 11:10 5197人阅读 评论(1) 收藏
1.开启云盾所有服务 2.通过防火墙策略限制对外扫描行为 请您根据您的服务器操作系统,下载对应的脚本运行,运行后您的防火墙策略会封禁对外发包的行为,确保您的主机不会再出现恶意发包的情况,为您进行后续数 ...
- MQ选型对比RabbitMQ RocketMQ ActiveMQ
原文:MQ选型对比RabbitMQ RocketMQ ActiveMQ 几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装 ...