2010-11-19 17 views
84

In questo momento ho un'app che carica una visualizzazione Web e tutti i clic sono conservati all'interno dell'app. Quello che vorrei fare è quando si fa clic su un determinato collegamento, ad esempio http://www.google.com all'interno dell'app, per aprire il browser predefinito. Se qualcuno ha qualche idea per favore fammi sapere!WebView link click apri il browser predefinito

+0

Grazie mille. Questa domanda ha risparmiato un sacco di tempo – 5511002233

risposta

12

è possibile utilizzare Intenti per questo:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url")); 
startActivity(browserIntent); 
+8

che dovresti usare Intent.ACTION_VIEW – rajh2504

151

ho dovuto fare la stessa cosa oggi e ho trovato una risposta molto utile su StackOverflow che voglio condividere qui nel caso in cui qualcun altro ne ha bisogno.

Source (da sven)

webView.setWebViewClient(new WebViewClient(){ 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) { 
      view.getContext().startActivity(
       new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
      return true; 
     } else { 
      return false; 
     } 
    } 
}); 
+3

questa risposta mi ha aiutato molto! Grazie! –

+5

Nota che se l'url è relativo, (non inizia con "http: //") allora si aprirà all'interno dell'app. Per evitare ciò, restituire sempre true e fare collegamenti url relativi non fare nulla. –

+0

+1 risposta davvero perfetta. :) –

5

È possibile utilizzare un Intent per questo:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
startActivity(launchBrowser); 
25
WebView webview = (WebView) findViewById(R.id.webview); 
    webview.loadUrl(http://www.playbuzz.org); 

non dovete includere questo codice // webview.setWebViewClient (nuova WebViewClient()); invece u bisogno di usare il codice d sotto

webview.setWebViewClient(new WebViewClient(){ 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      String url2="http://www.playbuzz.org/"; 
      // all links with in ur site will be open inside the webview 
      //links that start ur domain example(http://www.example.com/) 
      if (url != null && url.startsWith(url2)){ 
       return false; 
       } 
      // all links that points outside the site will be open in a normal android browser 
      else { 
       view.getContext().startActivity(
       new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
       return true; 
       } 
     } 
    }); 
+3

questo codice mi aiuta davvero in quel problema – Cristiana214

7

Hai solo bisogno di aggiungere la seguente riga

yourWebViewName.setWebViewClient(new WebViewClient()); 

Controllare this per la documentazione ufficiale.