带有谷歌搜索结果链接的webview在我的Android应用程序中加载,当我点击链接时,它打开了一个空白屏幕。
我认为,它与结果页面中每个href链接附加的onmousedown事件有关。
如果我有办法处理这个并让webview实际打开我点击的链接,那么将非常感激。
答案 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);
}
}