2010-03-04 107 views
195

我已在我的WebView中加載了一個外部URL。現在我需要的是,當用戶點擊加載頁面上的鏈接時,它必須像普通瀏覽器一樣工作,並打開同一個WebView中的鏈接。但它打開默認瀏覽器並在那裏加載頁面?單擊URL將打開默認瀏覽器

我已啓用JavaScript。但仍然無法正常工作。我忘了什麼嗎?

回答

339

如果您使用的是WebView你必須自己攔截點擊,如果你不想在默認的Android行爲。

您可以監視使用WebViewClientWebView事件。你想要的方法是shouldOverrideUrlLoading()。這允許您在選擇特定URL時執行自己的操作。

您使用setWebViewClient() method設置了WebViewWebViewClient

如果你看一下WebView sample in the SDK有一個例子,你想要的東西,其中一樣。它是那樣簡單:

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

看起來這是'WebViewClient'的默認行爲,不需要子類,如果這是你正在做的。我只是通過執行'myWebView.setWebViewClient(新的WebViewClient());' – Adam 2012-10-07 20:25:32

+7

@ dave-webb來更新示例以便不調用loadUrl。 每個人都在閱讀 - 請不要複製代碼(從回調中返回false而不是調用view.loadUrl)。調用loadUrl會引入一個細微的錯誤,如果您在頁面內使用自定義方案URL(例如