Google search links in the webview of my app opening of a blank page ..!

倾然丶 夕夏残阳落幕 提交于 2019-12-24 05:32:14

问题


The webview with google search result links loaded in my android app, when I clicked on the links, it is opening up a blank screen.

I think, it is something to do with onmousedown event attached with every href links in the result page.

will be very thankful if I am provided with a way to handle this and make webview to actually openup the link that I am clicking on.


回答1:


I'm having the same problem. I get the "about:blank" page when I click on Google search results in a WebView in my Asus Transformer TF700 running 4.1.1. It doesn't happen in my Acer A100 tablet or other phones.

I noticed the result links work when I switch from Tablet to Classic version at the bottom of main Google Search Page.

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

If you remove the ?nota=1 in the above URL you won't see the Tablet option in your PC. In your tablet however the default google.com URL displays the Tablet option at the bottom.

If you use nota=1 in your search results page the links will work. Like this:

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

I know this is not perfect. We'd like the default Google search results page's links to work. Google is doing something funky on the Tablet version which Asus Transformer doesn't seem to like!

I will post an update when I figure out what is causing this. Oh! the fun with Android :)




回答2:


Here's another solution. After Google finishes loading the blank page you load the WebView with the previous page (which is the actual result) using the WebView's tag or a member variable. Like this:

@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);
    }
}

Here's my 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/



回答3:


I wanted to add this as a comment to Stan Texan's answer, but I don't have enough rep points...

I'm testing on an older tablet (LG Optimus Tab/DoCoMo L-06c/T-Mobile G-Slate/Rogers LG V909) running Honeycomb (3.1) and my WebView is running into the same problem on Google's website.

Google's own browser works just fine when navigating to www.google.com, but when I use that url in a WebView in my app, the links are all "about:blank". 0_o

Therefore, if the user wants to go to Google's search page, I rewrite the url as follows:

//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);

So far this works, but I haven't tested it out for every scenario.




回答4:


I had a look at your Vuwize app. Instead of embedding www.google.com directly into a WebView, you seem to have your own search form, run a Google search, and then render the result page yourself. This could explain your problem because result links in search results from Google is not straight href links to original pages. To understand more about your problem, it's necessary to see what exactly you're doing and how you run Google search from your server side.

If you just embed www.google.com in a WebView directly like this:

    setContentView(R.layout.main);

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

    mWebView.getSettings().setJavaScriptEnabled(true);

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

    mWebView.setWebViewClient(new HelloWebViewClient());

Users can enter search directly into Google and get result pages, where links are all clickable in the same WebView.




回答5:


Here's another solution to handle blank pages caused in Jelly Bean. I found 2 URLs that cause blank pages. Override loadUrl(String) and not load them at all.

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


来源:https://stackoverflow.com/questions/12719293/google-search-links-in-the-webview-of-my-app-opening-of-a-blank-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!