2011-12-16 16 views
12

To, co mam, to w zasadzie prosta przeglądarka internetowa, która ładuje stronę. Ta strona ma kilka linków, które otwierają się w widoku internetowym. Tak właśnie powinno być, więc wszystko działa dobrze.Otwórz link z przeglądarki internetowej Android w zwykłej przeglądarce jako wyskakujące

Ale istnieje jeden link z tej strony, który powinien zostać załadowany jako wyskakujące okienko, więc chcę, aby był otwierany w zwykłej przeglądarce, gdy ludzie go klikną. Ale jak już wspomniałem, wszystkie linki otwierają się w widoku internetowym, więc link też to robi.

Moje pytanie brzmi: jak mogę uczynić ten link otwartym w zwykłej przeglądarce jako rodzaj wyskakującego okienka? Czy to możliwe? Link jest zmienny, więc zmienia się zawsze, nie można go zakodować na stałe w aplikacji, aby otworzyć w nowej przeglądarce.

Czy ktoś może mi powiedzieć, czy jest to możliwe i jak to zrobić? Dziękuję Ci bardzo!

+0

Zastosowanie intencji; zobacz: http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application – Ozzy

+1

Wiem, że mówisz, że nie możesz ciężko koduj to, ale co się zmieni w związku z linkiem, na pewno coś jest zakodowane, na czym możesz polegać? Następnie wystarczy przesłać onUrlLoading i przekazać ten URL do super, ale poradzić sobie z innymi. W razie potrzeby mogę podać ci przykład? – Blundell

+0

@ user1031312 Haha oczywiście nie, nie jestem głupi! Dziękuję za odpowiedź, zobaczę to jutro! – MartijnG

Odpowiedz

28

Oto przykład z nadrzędnym załadunku Webview pozostać w swojej WebView lub opuścić:

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class TestWebViewActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     WebView webView = (WebView) findViewById(R.id.webview); 
     webView.setWebViewClient(new MyWebViewClient()); 
    } 
} 


class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.contains("somePartOfYourUniqueUrl")){ // Could be cleverer and use a regex 
      return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser 
     } else { 
      view.loadUrl(url); // Stay within this webview and load url 
      return true; 
     } 
    } 
} 
+0

Dziękuję bardzo! Myślę, że właśnie tego szukam. Przetestuję to jutro, najpierw muszę się przespać, bo teraz jest 1.15;) – MartijnG

+0

Tak, ja też, uzależnieni: p haha. Tak, więc możesz umieścić "share.php" wewnątrz instrukcji include. Tylko bądź ostrożny, nikt inny go nie używa. – Blundell

4
public class WebViewActivity extends Activity { 

    private WebView webView; 
    private ProgressDialog progress; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 
     WebView myWebView = (WebView) findViewById(R.id.webView1); 
     myWebView.setWebViewClient(new MyWebViewClient()); 
     myWebView.loadUrl("https://www.example.com"); 
    } 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (Uri.parse(url).getHost().equals("https://www.example.com")) { 
       // This is my web site, so do not override; let my WebView load the page 
       return false; 
      } 
      // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 
    } 
} 
Powiązane problemy