Android WebView 捕捉点击的URL中的信息
项目要求,在WebView中点击搜索关键字,加载其他Web页面时,需要在一个文本输入框中,实时显示关键字
事实上,这种点击,是WebView内的,并没有跳出这个WebView,Activity也没有经历任何生命周期。看似无法捕捉
事实上很简单,通过重写shouldOverrideUrlLoading(),可以获取各种点击事件对应的URL。解析其参数列表,看其中有没有
keys关键字,获取其value,解析、显示就可以了
shouldOverrideUrlLoading() 方法
返回true 表明点击网页里面的链接还是在当前的webview里跳转,
返回false 跳到其他浏览器
其中,获取URL中的参数Map的类URLUtil.java,见另一篇博文: URL网址参数解析类
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("intent://")){
return true;
}
super.shouldOverrideUrlLoading(view, url);
if (TextUtils.isEmpty(url))
return true;
//以下内容 用于:页面中点击其他关键字搜索时,在最上端的EditText中添加hint
DebugUtil.d("myc", "url = " + url);
Map<String, String> mapRequest = URLUtil.getRequestParamMap(url);
if(mapRequest!=null && mapRequest.size()!=0) {
String keyWord = mapRequest.get("keys"); //获取关键字字段
DebugUtil.d("myc", "keyWord = " + keyWord);
if (!TextUtils.isEmpty(keyWord)) {
try {
String result = URLDecoder.decode(keyWord, "UTF-8"); //用Android自带的URLDecoder解析成中文
setKeyword(result);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
Android WebView 捕捉点击的URL中的信息的更多相关文章
- webview之如何设计一个优雅健壮的Android WebView?(下)(转)
转载:https://iluhcm.com/2018/02/27/design-an-elegant-and-powerful-android-webview-part-two/ (这篇文章写得有点晚 ...
- 如何设计一个优雅健壮的Android WebView?(下)
转:如何设计一个优雅健壮的Android WebView?(下) 前言 在上文<如何设计一个优雅健壮的Android WebView?(上)>中,笔者分析了国内WebView的现状,以及在 ...
- Android WebView中的JavaScript代码使用
在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己创建接口在你的应用和Java ...
- 【WebView】Android WebView中的Cookie操作
Hybrid App(混合式应用)的开发过程中少不了与WebView的交互,在涉及到账户体系的产品中,包含了一种登录状态的传递.比如,在Native(原生)界面的登录操作,进入到Web界面时,涉及到账 ...
- android webview点击返回键返回上一级activity
android webview点击返回键返回上一个activity @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- android webview点击返回键回到上一个html
android webview点击返回键返回上一个html @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ( ...
- Android WebView的HTML中的select标签不起作用
Android WebView的HTML中的select标签不起作用 经过查询资料,了解到android对html里的select标签是弹出一个原生的选择器. 问题: Webview中的select没 ...
- Android WebView 302斗争之旅
一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...
- html与Android——webView
1 <html> 2 <head> 3 <title>myHtml.html</title> 4 5 <meta http-equiv=" ...
随机推荐
- spring: 使用嵌入式数据源 EmbeddedDatabaseBuilder
嵌入式数据源作为应用的一部分运行,非常适合在开发和测试环境中使用,但是不适合用于生产环境.因为在使用嵌入式数据源的情况下,你可以在每次应用启动或者每次运行单元测试之前初始化测试数据. 使用Spring ...
- VS2013打包安装(InstallShield Limited Edition for Visual Studio 2013 )
(1)百度文库安装步骤: http://wenku.baidu.com/link?url=B7NIE3gmoVx7UYUKigVGMjmINFIThpkH0DLXcYGx_9B1YzrX1QfHO2N ...
- 在Android中使用实时调度(real-time)
Linux的线程调度策略中有FIFO和RT的实时调度方法,但是在Android中做了限制,普通用户不能修改线程的调度算法为FIFO和RT,必须ROOT用户才能更改.但问题是程序是以普通用户启动和运行的 ...
- IE跨Iframe时Session丢失问题
例如IIS下,可以打开IIS窗口——〉选择一个网站——〉属性——〉http头,增加一个http头 然后输入头名:P3P 输入头内容:CP=CAO PSA OUR 点评:与上一个方法类似,此方法也要求第 ...
- hdoj-1106-排序(stringstream)
题目链接 /* Name: Copyright: Author: Date: 2018/5/2 20:56:53 Description: */ #include <iostream> # ...
- C8051F340 USB0 寄存器访问
/*************************************************************************** * C8051F340 USB0 寄存器访问 ...
- mac外接键盘修饰键设置
command 和 control 互换,option保持不变即可,差不多可以做到类似windows快捷键的使用习惯.
- java-10异常处理动手动脑
1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutExcep ...
- AtCoder Petrozavodsk Contest 001 A - Two Integers
Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement You are given positive ...
- element-ui table 底部滚动条问题
1.将 .el-table 标签css属性中的 position: relative; width: 100%; max-width: 100%; 修改成 position: absolute; wi ...