Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
在一个大的Android项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机。但是这些网页中有好多链接,但是这些链接有些内容有是我们客户端已经实现的,比如有一个注册链接,其实客户端也实现了注册功能,我们不想再继续跳转到网页注册,而是打开客户端某个注册Activity,可以通过以下方式来实现:
xml 文件,如下:
java代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
/** * 通用的webview,只需要传入2个参数即可, param1:title 标题 param2:url 网站 * * */ public class PublicWebView extends Activity { private WebView webview; private ImageButton back; private LinearLayout public_webview_top; private boolean showTitle; private ProgressBar progressBar; @SuppressLint (JavascriptInterface) @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.public_webview); Intent intent = getIntent(); String url = intent.getStringExtra(url); String title = intent.getStringExtra(title); showTitle = intent.getBooleanExtra(show_title, true ); public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top); if (showTitle) { public_webview_top.setVisibility(View.VISIBLE); } else { public_webview_top.setVisibility(View.GONE); } TextView titletv = (TextView) findViewById(R.id.public_webview_title); titletv.setText(title); progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar); webview = (WebView) findViewById(R.id.public_webview_webview); // 加载需要显示的网页 webview.addJavascriptInterface( new JavascriptInterface(PublicWebView. this ), Phoenix_Android); webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); // 设置WebView属性,能够执行Javascript脚本 webview.getSettings().setJavaScriptEnabled( true ); // 加载需要显示的网页 webview.loadUrl(url); // 设置Web视图 webview.setWebViewClient( new MyWebViewClient()); webview.setWebChromeClient( new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100 ) { progressBar.setVisibility(View.GONE); } else { progressBar.setVisibility(View.VISIBLE); } super .onProgressChanged(view, newProgress); } }); back = (ImageButton) findViewById(R.id.public_webview_back); back.setOnClickListener( new BackListener(PublicWebView. this , null , 1 )); } @SuppressLint (NewApi) public class JavascriptInterface { @SuppressWarnings (unused) private Context context; public JavascriptInterface(Context context) { this .context = context; } public void back(String module, int status, String place) { reFreshBlance(); if (status == - 1 ) { // 用户取消了 return ; } else if (status == 0 ) { Toast.makeText(PublicWebView. this , 充值请求失败,请稍后重试..., Toast.LENGTH_SHORT).show(); return ; } else if (status == 1 ) { // 充值请求成功 reFreshBlance(); // 1.用户中心进来的有两个参数 // a.bet参数是返回购彩界面 // b.userCenter返回用户中心 } } } // 监听 所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url); if (url != null && url.contains(/m/phoneRegiste. do )) { Intent intent = new Intent(PublicWebView. this , RegisterByPhone. class ); PublicWebView. this .startActivity(intent); finish(); return true ; } return super .shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { view.getSettings().setJavaScriptEnabled( true ); super .onPageFinished(view, url); } } // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 public boolean onKeyDown( int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) { // webview.goBack();// 返回前一个页面 finish(); return true ; } return super .onKeyDown(keyCode, event); } } |
结伴旅游,一个免费的交友网站:www.jieberu.com
推推族,免费得门票,游景区:www.tuituizu.com
Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity的更多相关文章
- [小程序开发] 微信小程序内嵌网页web-view开发教程
为了便于开发者灵活配置小程序,微信小程序开放了内嵌网页能力.这意味着小程序的内容不再局限于pages和large,我们可以借助内嵌网页丰富小程序的内容.下面附上详细的开发教程(含视频操作以及注意事项) ...
- Qt和JavaScript使用QWebChannel交互一——和Qt内嵌网页交互
Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 目录 Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 前言 一.效果 二.实现过程 ...
- 关于Unity程序在IOS和Android上显示内嵌网页的方式
近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的 ...
- 微信小程序之内嵌网页(webview)
设置权限 要在小程序中访问外部网页,需要先设置允许访问的业务网站的域名.让我们先登录小程序平台管理后台页面,进入“设置” => "开发设置",可以看到这边多出来了一块“业务域 ...
- Unity中内嵌网页插件UniWebView
一.常见Unity中内嵌网页实现方式: 1.UnityWebCore只支持windows 2.Unity-Webview支持Android,IOS 3.UniWebView支持mac os,Andro ...
- Unity 内嵌网页
uniwebview 官网 http://uniwebview.onevcat.com/reference/class_uni_web_view.html http://uniwebview.onev ...
- Unity中内嵌网页插件UniWebView使用总结
目前有三种方式可以实现在Unity工程中实现内嵌网页的功能: 1. UnityWebCore:只支持Windows平台,调用浏览器内核,将网页渲染到mesh,作为gameObject. 2. Un ...
- 关于微信公众号内嵌网页的几个meta标签
最近在做微信公众平台内嵌app,其实也就是web app="=,不过就是基于微信内置浏览器(safari加了一个WeixinJS对象),稍微记一下几个html的meta标签(web app通 ...
- 微信小程序内嵌网页能力开放 小程序支持内嵌网页文档说明
为了方便开发者灵活配置微信小程序,张小龙现在开放了小程序的内嵌网页功能,这是一个非常大的惊喜啊,以后意味着你只要开放一个手机端网站,就可以制作一个小程序了哦.操作方法1.开发者登录微信小程序后台,选择 ...
随机推荐
- sql语句传参数
SET @register = '; SET @unregister = '; UPDATE cw_base_register SET register = @register, unregister ...
- [BZOJ 3771] Triple(FFT+容斥原理+生成函数)
[BZOJ 3771] Triple(FFT+生成函数) 题面 给出 n个物品,价值为别为\(w_i\)且各不相同,现在可以取1个.2个或3个,问每种价值和有几种情况? 分析 这种计数问题容易想到生成 ...
- 堆”,"栈","堆栈","队列"以及它们的区别
如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都还会问到, ...
- echarts markLine 辅助线非直线设置
效果图: 用例option: option = { title: { text: '未来一周气温变化', subtext: '纯属虚构' }, tooltip: { trigger: 'axis' } ...
- 计算机系统结构总结_Instruction Set Architecture
Textbook:<计算机组成与设计——硬件/软件接口> HI<计算机体系结构——量化研究方法> QR 这节我们来看CPU内部的一些东西. Instruct ...
- luogu P1397 [NOI2013]矩阵游戏
传送门 题目中那两个递推式显然可以写成矩乘的形式,然后十进制快速幂即可.这里不再赘述 只有两个递推式,我们可以考虑一波推式子,首先第一行的元素应该分别是\(1,a+b,a^2+ab+b,a^3+a^2 ...
- IDEA显示Run Dashboard窗口
接下来在workspace.xml RunDashBoard节点中添加如下内容:<component name="RunDashboard"> 在代码中加入 <o ...
- bash_profile和bashrc区别
[.bash_profile 与 .bashrc 的区别].bash_profile is executed for login shells, while .bashrc is executed f ...
- 4、LayIM 开发者文档
一.配置文档目录 1.好友列表状态 2.当前会话状态 3.查看群成员 4.业务暂无此必要 5.发送消息 6.接受消息 7.监听我主面板的在线状态 8.弹出申请好友面板(业务场景用于好友添加需申请) 9 ...
- Zabbix--03 邮件报警、微信报警
目录 一. 邮件报警 1.定义发件人 2.定义收件人 3.优化告警信息 二. 微信报警 1.查看配置文件里的脚本目录路径 2.将weixin.py放在zabbix特定目录 3.配置发信人 4.配置收信 ...