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);
        }
    }
时间: 2024-10-27 13:55:48

Android WebView 捕捉点击的URL中的信息的相关文章

获取Android webview的点击元素

经常看见别人的App里webview长按图片就能显示大图,点击号码可以直接找电话,那这是怎么实现的呢 WebView的getHitTestResult()的函数可以获取点击页面元素的类型,然后,我们再根据类型进行相应的处理 1 HitTestResult result = ((WebView) v).getHitTestResult() HitTestResult 类 方法 描述 getType() 获取所选中目标的类型,可以是图片,超链接,邮件,电话等等 getExtra() 获取额外的信息

android WebView 应用内点击超链接不调用系统浏览器

public class MainActivity extends Activity { private WebView mWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.webv

Android WebView执行GPU命令的过程分析

Android WebView使用的Chromium引擎,虽然没有自己的GPU进程或者线程,但是却可以执行GPU命令.原来,Android WebView会给它提供一个In-Process Command Buffer GL接口.通过这个接口,Chromium引擎就可以将GPU命令提交给App的Render Thread执行.本文接下来就详细分析Android WebView执行GPU命令的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 从前面Ch

Android WebView中的JavaScript代码使用(转载)

转载来源:http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html 本篇文章主要介绍WebView中的JavaScript代码的执行相关,已经JS代码与Android代码的互相调用. (因为本人对Web开发并不是很熟悉,所以如果有哪些地方说得不对,还请指正.) 在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己

Android:WebView中对图片注册上下文菜单

前言 今天一朋友问我一个问题,就是如何在WebView控件中的图片增加上下文菜单,以便增加保存图片等功能.今天就给他简单做了一个演示Demo,现写下来,给有相同问题的朋友提供些许思路吧. 概要实现 其实这个功能很简单,没有太复杂的东西,就是对WebView的控件的使用,一是给WebView注册了上下文菜单事件,二是在响应事件中去判断事件源的类型,如果是图片类型,则把url取出来 注册上下文菜单事件 这个就比较简单了通过下面的代码即可完成. WebView vw = (WebView) findV

android webview点击返回键返回上一级activity

android webview点击返回键返回上一个activity 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 // TODO Auto-generated method stub 4 if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 5 return true; 6 } 7 return super

android webview点击返回键回到上一个html

android webview点击返回键返回上一个html 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { 4 mWebView.goBack();// 返回前一个页面 5 return true; 6 } 7 return super.onKeyDown(keyCod

android URL中文和空格会报错解决方案

url = URLEncoder.encode(urlStr,"utf-8").replaceAll("\\+", "%20"); //encode会将空格替换为+号,所有要讲+号替换为空格的转义%20 url = url.replaceAll("%3A", ":").replaceAll("%2F", "/"); //encode会把url里的/和:这2个符号变成%

[Android]Webview中JS接口调用Java-版本问题

问题: The javascript to java bridge on 2.3 Gingerbread is causing crashes. This is 100% reproducible using the WebViewDemo application from here: http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/Samples/WebViewDemo. Note: The project