方法:

shouldOverrideUrlLoading方法中拦截url,匹配到tbopen://开头的,做跳转。以下为通用方法。关于原生WebView的配置与问题请看我的另一篇博客:Android 原生WebView访问使用iFrame网页问题

 mWebView.setWebViewClient(new WebViewClient() {            @Override            public void onPageStarted(WebView view, String url, Bitmap favicon) {                super.onPageStarted(view, url, favicon);            }            @Override            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {                handler.proceed();                super.onReceivedSslError(view, handler, error);            }            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                try {                    if (!TextUtils.isEmpty(url)) {                        // 处理自定义scheme协议                        if (!url.startsWith("http") && !url.startsWith("https")) {                            try {                                final Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);                                intent.addCategory("android.intent.category.BROWSABLE");                                intent.setComponent(null);                                if (null != intent) {                                    startActivity(intent);                                }                                return true;                            } catch (Exception e) {                                // 没有安装的情况                                e.printStackTrace();                                ToastUitl.showShort("尚未安装此应用!");                                return true;                            }                        }                    }                } catch (Exception e) {                    e.printStackTrace();                }                if (url.contains("http") || url.contains("https")) {                    // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器                    view.loadUrl(url);                    return true;                }                return super.shouldOverrideUrlLoading(view, url);            }            @TargetApi(Build.VERSION_CODES.LOLLIPOP)            @Override            public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {                return super.shouldInterceptRequest(view, request);            }            @Override            public void onPageFinished(WebView view, String url) {                super.onPageFinished(view, url);                if (null != title && null != view && TextUtils.isEmpty(mTitle))                    title.setText(view.getTitle());            }        });                        
  • 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

更多相关文章

  1. android 调用前摄像头进行拍照的方法及完整例子
  2. 动态设置android:drawableLeft|Right|Top|Bottom
  3. Activity切换导致的onCreate重复执行
  4. Android(安卓)各层中日志打印功能的应用
  5. android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConn
  6. Android(安卓)Glide(4.9.0)源码分析
  7. 浅谈Java中Collections.sort对List排序的两种方法
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python list sort方法的具体使用

随机推荐

  1. Android开发效率的小技巧
  2. Android UI开发第二十二篇――android 瀑
  3. How about some Android(安卓)graphics t
  4. Android仿QQ登陆
  5. android setBackgroundDrawable setImage
  6. 结合源码讲解Tabost
  7. 出现This template depends on Android(
  8. android常见错误之 No resource found th
  9. Android(安卓)Gesture
  10. 手势(Gesture)之手势检测(GestureDetector)