2010-07-14 15 views
24

Ho scritto una semplice app helloworld con una WebView che ha un link alla CNN su una pagina simple.html nella mia cartella di asset.WebView Android - Intercetta i clic

<a href="http://cnn.com">cnn.com</a> 

Come posso catturare il mouse su questo sulla mia attività, fermare il WebView da navigare, e quindi informare l'attività che "http://CNN.com" è stato cliccato?

risposta

65

poi si deve impostare un WebViewClient al WebView e sovrascrivere shouldOverrideUrlLoading e onLoadResource metodi. Lasciatemi fare un semplice esempio:

WebView yourWebView; // initialize it as always... 
// this is the funny part: 
yourWebView.setWebViewClient(yourWebClient); 

// somewhere on your code... 
WebViewClient yourWebClient = new WebViewClient(){ 
    // you tell the webclient you want to catch when a url is about to load 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url){ 
     return true; 
    } 
    // here you execute an action when the URL you want is about to load 
    @Override 
    public void onLoadResource(WebView view, String url){ 
     if(url.equals("http://cnn.com")){ 
      // do whatever you want 
     } 
    } 
} 
+0

Scusa, so che questo è obsoleto ma era esattamente quello che stavo cercando TRANNE .... la mia navigazione non è completa. Quando l'utente fa clic su un collegamento in WebView, passa a shouldOverrideLoading e fa la cosa ma non completa la navigazione. Voglio completarlo voglio solo annusare ciò che hanno selezionato per primo. – GPGVM

+1

In tal caso, non restituire true in shouldOverrideUrlLoading – Cristian

+1

, quindi restituire false, a meno che non si desideri interrompere realmente l'operazione. – GPGVM

Problemi correlati