Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌搜索链接在我的应用程序的网络视图打开一个空白页。。!_Android_Webview_Href_Google Search_Onmousedown - Fatal编程技术网

Android 谷歌搜索链接在我的应用程序的网络视图打开一个空白页。。!

Android 谷歌搜索链接在我的应用程序的网络视图打开一个空白页。。!,android,webview,href,google-search,onmousedown,Android,Webview,Href,Google Search,Onmousedown,在我的android应用程序中加载了带有谷歌搜索结果链接的webview,当我点击链接时,它打开了一个空白屏幕 我认为,这与结果页面中每个href链接附带的onmousedown事件有关 如果能为我提供处理此问题的方法并使webview真正打开我正在单击的链接,我将非常感激。我看过你的Vuwize应用程序。与直接将www.google.com嵌入网络视图不同,您似乎有自己的搜索表单,运行谷歌搜索,然后自己呈现结果页面。这可以解释你的问题,因为谷歌搜索结果中的结果链接不是直接指向原始页面的href

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

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


如果能为我提供处理此问题的方法并使webview真正打开我正在单击的链接,我将非常感激。

我看过你的Vuwize应用程序。与直接将www.google.com嵌入网络视图不同,您似乎有自己的搜索表单,运行谷歌搜索,然后自己呈现结果页面。这可以解释你的问题,因为谷歌搜索结果中的结果链接不是直接指向原始页面的href链接。为了更好地了解您的问题,有必要了解您到底在做什么,以及如何从服务器端运行谷歌搜索

如果您只是将www.google.com直接嵌入网络视图,如下所示:

    setContentView(R.layout.main);

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

    mWebView.getSettings().setJavaScriptEnabled(true);

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

    mWebView.setWebViewClient(new HelloWebViewClient());

用户可以直接进入谷歌搜索并获得搜索结果页面,所有链接都可以在同一网络视图中点击

我也有同样的问题。当我在运行4.1.1的华硕Transformer TF700的网络视图中点击谷歌搜索结果时,我会看到“关于:空白”页面。这在我的Acer A100平板电脑或其他手机中不会发生

当我在谷歌主搜索页面底部从平板电脑切换到经典版本时,我注意到结果链接起作用

如果删除上述URL中的?nota=1,您将不会在电脑中看到Tablet选项。但是,在平板电脑中,默认的google.com URL会在底部显示Tablet选项

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

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

我知道这并不完美。我们希望默认的谷歌搜索结果页面的链接能够正常工作。谷歌在平板电脑版本上做了一些时髦的事情,华硕Transformer似乎并不喜欢


我会在找出原因后发布更新。哦Android的乐趣:)

这里是另一个解决方案。在谷歌完成加载空白页后,使用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);
    }
}
这是我的日志:

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/

下面是另一个处理Jelly Bean中产生的空白页的解决方案。我发现了两个导致空白页面的URL。重写loadUrl(字符串)并根本不加载它们

@Override
public void loadUrl(String url)
{
    if (url != null && !(url.startsWith("file:///android_asset") || "about:blank".equals(url)))
    {
        super.loadUrl(url);
    }
}
我想在Stan Texan的回答中添加这一点作为评论,但我没有足够的代表点

我正在一台运行蜂巢(3.1)的旧平板电脑(LG Optimus Tab/DoCoMo L-06c/T-Mobile G-Slate/Rogers LG V909)上测试,我的WebView在谷歌网站上遇到了同样的问题

谷歌自己的浏览器在浏览www.Google.com时运行良好,但当我在应用程序的网络视图中使用该url时,链接都是“关于:空白”。0_o

因此,如果用户想进入Google的搜索页面,我将url重写如下:

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

到目前为止,这是可行的,但我还没有针对每个场景进行测试。

谢谢您的回复SSGG。我没有使用任何自定义表单。除了一件事,我所做的正是你在上面发布的。我不是在加载时直接在webview中加载google.com url。如果用户在我的url框中键入正确的url,那么我要求webview以其他方式导航到该url,我要求webview加载“google.com/search?q=”但我看到这个空白页问题,无论是用户直接在url框中输入google.com并搜索某物,还是我带用户到上面的带有搜索词的url。令人惊讶的是,当我在手机上尝试这个应用程序时,我并没有看到这个空白页问题,但当我在平板电脑上尝试这个应用程序时,问题就存在了。