Android - Webview中的Bug?一些URL的提示webview启动外部浏览器

时间:2014-08-05 19:42:44

标签: android url webview

我有一个带有webview的“NewsActivity”。当我从主要活动开始时,链接会在webview中正确打开,但由于某种原因,某些网址会导致webview打开,然后立即启动外部浏览器。检查调试控制台我没有发现webview抛出的任何异常或其他消息,因为无法处理该URL。 请注意,我不是在讨论webview加载网址/页面后点击的链接。 我也尝试在webview中激活javascript,但无济于事。 此外,这只发生在来自同一域的一些网址(特别是新闻网站;此外,我没有阻止网址或覆盖)。

以下是无法在网页视图中打开的其中一个网址:url_not_loaded

以下是调用“NewsActivity”

的代码
            Intent intent = new Intent(this, NewsActivity.class);
            intent.putExtra(MainActivity.EXTRA_MESSAGE, url);
            startActivity(intent);

以下是“NewsActivity”中的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news);
    Intent intent = getIntent();
    String url = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    mWebview = (WebView) findViewById(R.id.newsv);
    Log.d(MainActivity.LOG_TAG, "URL: " + url);
    mWebview.loadUrl(url);
}

如果有人知道可能发生的事情或可能提出任何想法,我将不胜感激。 谢谢!

3 个答案:

答案 0 :(得分:0)

您的网址可能有重定向。我遇到了类似的问题。

使用webview将其添加到您的活动中。

webView.setWebViewClient(new Callback());

在onCreate之外添加。

private class Callback extends WebViewClient{  //Helps to open in webview instead of browser

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return (false);
    }

}

答案 1 :(得分:0)

这不是错误。

您需要使用WebViewClient

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            view.loadUrl(url);
            System.out.println("hello");
            return false;
        }
    });
    //Toast.makeText(this, "", Toast.LENGTH_SHORT);
    mWebView.loadUrl(url);

答案 2 :(得分:0)

您可以像这样设置newWebViewClient:

webView.setWebViewClient(new WebViewClient());

但更确切地说,你需要覆盖这样的shouldOverrideUrlLoading方法:

webView.setWebViewClient(new WebViewClient(){

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