谷歌搜索链接在我的应用程序的webview中打开一个空白页面..!

时间:2012-10-04 01:48:22

标签: android webview href google-search onmousedown

带有谷歌搜索结果链接的webview在我的Android应用程序中加载,当我点击链接时,它打开了一个空白屏幕。

我认为,它与结果页面中每个href链接附加的onmousedown事件有关。

如果我有办法处理这个并让webview实际打开我点击的链接,那么

将非常感激。

5 个答案:

答案 0 :(得分:1)

这是另一种解决方案。 Google完成加载空白页后,使用WebView的标记或成员变量加载WebView和上一页(这是实际结果)。像这样:

@Override
public void onPageFinished(WebView view, String url)
{
    System.out.println("onPageFinished: " + url);
    if ("about:blank".equals(url) && view.getTag() != null)
    {
        view.loadUrl(view.getTag().toString());
    }
    else
    {
        view.setTag(url);
    }
}

这是我的LogCat:

I/System.out(13182): onPageFinished: http://www.google.com/#hl=en&sugexp=les%3B&gs_rn=1&gs_ri=tablet-gws&cp=2&gs_id=9&xhr=t&q=amazon...
I/System.out(13182): onPageFinished: http://www.amazon.com/
I/System.out(13182): onPageFinished: about:blank
I/System.out(13182): onPageFinished: http://www.amazon.com/

答案 1 :(得分:1)

我想将此添加为对斯坦德克萨斯答案的评论,但我没有足够的代表点......

我正在使用运行Honeycomb(3.1)的旧平板电脑(LG Optimus Tab / DoCoMo L-06c / T-Mobile G-Slate / Rogers LG V909)进行测试,我的WebView在Google网站上遇到了同样的问题。

谷歌自己的浏览器在导航到www.google.com时效果很好,但是当我在我的应用程序中的WebView中使用该URL时,链接都是“about:blank”。 0_o

因此,如果用户想要访问Google的搜索页面,我会按如下方式重写网址:

//get the url from the user..
inUrl = urlAddressEditText.getText().toString();
// make sure it's properly formatted...
...
// then add the "/?nota=1&" if it's a Google domain. 
String outUrl = inUrl.replaceFirst("(www\\.google\\..*/?)(\\??)", "$1/?nota=1&");
webView.loadView(outUrl);

到目前为止,这有效,但我还没有针对每种情况进行测试。

答案 2 :(得分:0)

我看了一下你的Vuwize应用程序。您没有将www.google.com直接嵌入到WebView中,而是拥有自己的搜索表单,运行Google搜索,然后自行呈现结果页面。这可以解释您的问题,因为来自Google的搜索结果中的结果链接不是指向原始页面的直接href链接。要了解有关您的问题的更多信息,有必要了解您正在做什么以及如何从服务器端运行Google搜索。

如果您直接将www.google.com嵌入WebView中,请执行以下操作:

    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);

    mWebView.getSettings().setJavaScriptEnabled(true);

    mWebView.loadUrl("http://www.google.com");

    mWebView.setWebViewClient(new HelloWebViewClient());

用户可以直接在Google中输入搜索并获取结果页面,其中链接均可在同一WebView中单击。

答案 3 :(得分:0)

我遇到了同样的问题。当我在运行4.1.1的Asus Transformer TF700中点击WebView中的Google搜索结果时,我得到了“about:blank”页面。它不会发生在我的Acer A100平板电脑或其他手机中。

我注意到,当我从主要Google搜索页面底部的平板电脑切换到经典版本时,结果链接正常工作。

https://www.google.com/?nota=1

如果您删除了上述网址中的?nota = 1,您将无法在PC中看到平板电脑选项。但是,在平板电脑中,默认的google.com网址会在底部显示“平板电脑”选项。

如果您在搜索结果页面中使用nota = 1,则链接将起作用。像这样:

http://www.google.com/search?nota=1&q=amazon

我知道这不完美。我们希望默认的Google搜索结果页面的链接可以正常运行。 Google正在为平板电脑版本做一些时髦的事情,华硕Transformer似乎并不喜欢!

当我找出造成这种情况的原因时,我会发布更新。哦! Android的乐趣:)

答案 4 :(得分:0)

这是处理Jelly Bean中导致的空白页的另一种解决方案。我找到了2个导致空白页面的网址。覆盖loadUrl(String)并且根本不加载它们。

@Override
public void loadUrl(String url)
{
    if (url != null && !(url.startsWith("file:///android_asset") || "about:blank".equals(url)))
    {
        super.loadUrl(url);
    }
}