2013-01-31 54 views
2

我剛開始開發android應用程序,所以我需要一些幫助,我的webview應用程序很容易理解。所以,這是我的具體問題:如何強制webview應用程序打開鏈接,而不是在默認的Android瀏覽器中打開它們,具體取決於域名?

如何強制webview應用程序打開鏈接而不是在默認瀏覽器中打開它們取決於域?

請你的答案附上該代碼的編輯/擴展版本:

public class WebViewActivity extends Activity { 

private WebView webView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl("www.example.com"); 

您想在網頁視圖中打開其內容,讓我們說:www.qwerty.com每隔鏈接應該是由默認瀏覽器打開。

非常感謝提前。

回答

4

你必須創建一個WebViewClient

public class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 

然後將其設置爲你的WebView這樣的:

webview.setWebViewClient(new MyWebViewClient()); 
+1

+1完美的答案 – moDev

+0

@Mitesh謝謝:) – Ahmad

+0

WOW!感謝您的快速答案!但是:我必須在哪裏輸入域名,在我的情況下www.qwerty.com? – user2021707

1

你必須評估在自定義WebViewClient傳遞的URL。 布爾shouldOverrideUrlLoading有一個真實的和錯誤的價值。 當爲真,你發送url到瀏覽器,當,你留在WebView

public class MyWebViewClient extends WebViewClient { 
@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (Uri.parse(url).getHost().equals("www.qwerty.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;  
    } 
} 

然後從你的活動你叫確實是新WebClient

webview.setWebViewClient(new MyWebViewClient()); 
相關問題