2010-03-04 96 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(例如