zoukankan      html  css  js  c++  java
  • 关于用WebView或手机浏览器打开连接问题

    1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用手机浏览器,我们可以通过以下两种方法实现:

    (1)为WebView设置一个WebViewClient,并重写shouldOverrideUrlLoading(WebView view, String url)方法。

    1. class MyWebViewClient extends WebViewClient {  
    2.   
    3.     @Override  
    4.   
    5.     public boolean shouldOverrideUrlLoading(WebView view, String url){  
    6.   
    7.     // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边  
    8.   
    9.        view.loadUrl(url);  
    10.   
    11.        return true;  
    12.   
    13.        }  
    14.   
    15. }  


    (2)为WebView设置一个WebViewClient,并重写onPageStarted(WebView view, String url, Bitmap favicon)方法。

    1. class MyWebViewClient extends WebViewClient {  
    2.   
    3.     @Override  
    4.   
    5. public void onPageStarted(WebView view, String url, Bitmap favicon) {  
    6.   
    7.     // TODO Auto-generated method stub  
    8.   
    9.     super.onPageStarted(view, url, favicon);  
    10.   
    11. }  
    12.   
    13. }  


    这两种方法其实都是让参数view(WebView)加载参数url从而避免手机浏览器加载url,第一种方式更常用一些。

    2.但有些情况下  我们可能想用WebView打开大部分链接,而有些链接我们希望调用手机浏览器来打开,我最近的一个项目中就有这样的需求。这样其实也很简单,我们只需要对上面第一种方法加以修改即可。

    1. class MyWebViewClient extends WebViewClient {  
    2.   
    3.     @Override  
    4.   
    5.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
    6.   
    7.     // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边  
    8.   
    9.            if (openWithWevView(url)) {  
    10.   
    11.               view.loadUrl(url);  
    12.   
    13.            }else{  
    14.   
    15.               Uri uri = Uri.parse(url); //url为你要链接的地址  
    16.   
    17.               Intent intent =new Intent(Intent.ACTION_VIEW, uri);  
    18.   
    19.               startActivity(intent);  
    20.   
    21.            }  
    22.   
    23.            return true;  
    24.   
    25. }  


    其中openWithWevView(url)是自己写的一个方法,用来判断是否用WevView打开该链接。

  • 相关阅读:
    你人生中的那口井挖了没有?
    Stream接口
    console (控制台)
    assert.fail()
    assert.strictEqual()
    assert.equal()
    assert.ifError()
    assert.ok()
    nodejs assert 模块
    闭包
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6134825.html
Copyright © 2011-2022 走看看