2012-05-09 27 views
0

ユーザーがwebviewでクリックしたリンクを取得するにはどうすればよいですか?例:私のwebviewは情報とPDFを一覧表示するウェブサイトに移動します。ユーザーがPDFをクリックすると、そのPDFファイルのリンクをクリックしてGoogleのオンラインビューアに入れたいと思います。私が持っているコードは、クリックされたリンクを傍受しないので動作しません。何か案は?Android - webviewでクリックしたリンクユーザーを取得する

webview.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // do your handling codes here, which url is the requested url 
      // probably you need to open that url rather than redirect: 
      if (url.startsWith("tel:")) { 
       startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url))); 
      } else if (url.startsWith("mailto:")) { 
       url = url.replaceFirst("mailto:", ""); 
       url = url.trim(); 
       Intent i = new Intent(Intent.ACTION_SEND); 
       i.setType("plain/text").putExtra(Intent.EXTRA_EMAIL, 
         new String[] { url }); 
       startActivity(i); 

      } else if (url.startsWith("geo:")) { 
       try { 
       } catch (Exception e) { 
        System.out.println(e); 
       } 

      } else if (url.endsWith("pdf")) { 
       try{ 
        String pdf = (url); 
        webview.loadUrl("http://docs.google.com/viewer?url=" + pdf); 
        } 
        catch (ActivityNotFoundException e) 
        { 
        Toast.makeText(atcFaa.this, "No PDF Viewer Installed", Toast.LENGTH_LONG).show(); 
        } 

      } 

      else { 
       view.loadUrl(url); 
      } 
      return true; 
      // then it is not handled by default action 
     } 
    }); 
webview.loadUrl("http://www.somewebsite.com/publications/"); 
} 

答えて

4

私は上書きする方法はWebViewClient.shouldInterceptRequest(WebView view, String url)

public WebResourceResponse shouldInterceptRequest (WebView view, String url) 
  • は、リソース要求のホストアプリケーションに通知し、へ 応用が可能だと思います。ここでは

    は私が持っているものですデータを返します。戻り値がnullの場合、 WebViewは引き続き通常どおりリソースをロードします。それ以外の場合は、 リターンレスポンスとデータが使用されます。注:クライアントが プライベートデータにアクセスするときに注意する必要があるように、このメソッドは ネットワークスレッドによって呼び出されます。パラメータ

は、私がその一例で述べたように、最小SDKのバージョンは、11であることがわかりwebview shouldinterceptrequest example

+0

を参照してください。私はバージョン10(まだ2.3.3ジンジャーブレッドの人々のために)のためにビルドしています。次のバージョン、11にアップグレードする私の唯一のオプションはありますか? – user1363871

関連する問題