2

私のAndroidアプリにロードされたグーグル検索結果リンクを含むウェブビュー、私がリンクをクリックしたとき、それは空白の画面を開いています。

結果ページのすべてのhrefリンクに添付されたonmousedownイベントと関係があると思います。

これを処理し、クリックしているリンクを実際に開くためのWebビューを作成する方法が提供されれば非常にありがたいです。

4

5 に答える 5

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/
于 2013-01-16T06:30:24.003 に答える
1

これをスタン・テキサンの回答にコメントとして追加したかったのですが、十分な担当者ポイントがありません...

Honeycomb (3.1) を実行している古いタブレット (LG Optimus Tab/DoCoMo L-06c/T-Mobile G-Slate/Rogers LG V909) でテストしていますが、私の WebView は Google の Web サイトで同じ問題に遭遇しています。

Google 独自のブラウザは、www.google.com に移動するときに問題なく動作しますが、アプリの WebView でその URL を使用すると、リンクはすべて「about:blank」になります。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);

これまでのところこれでうまくいきますが、すべてのシナリオでテストしたわけではありません。

于 2013-12-04T01:03:20.010 に答える
1

私は同じ問題を抱えています。4.1.1 を実行している Asus Transformer TF700 で WebView の Google 検索結果をクリックすると、「about:blank」ページが表示されます。Acer A100 タブレットやその他の携帯電話では発生しません。

メインの Google 検索ページの下部にあるタブレット バージョンからクラシック バージョンに切り替えると、結果リンクが機能することに気付きました。

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

上記の URL の ?nota=1 を削除すると、PC にタブレット オプションが表示されなくなります。ただし、タブレットでは、デフォルトの google.com URL の下部に [タブレット] オプションが表示されます。

検索結果ページで nota=1 を使用すると、リンクが機能します。このような:

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

私はこれが完璧ではないことを知っています。デフォルトの Google 検索結果ページのリンクが機能することを望みます。Google は、Asus Transformer が好まないように見えるタブレット バージョンで何かファンキーなことをしています!

何が原因なのかが分かり次第、アップデートを投稿します。おー!Androidの楽しみ:)

于 2013-01-16T04:43:56.980 に答える
0

JellyBeanで発生した空白ページを処理する別のソリューションを次に示します。空白ページの原因となるURLが2つ見つかりました。loadUrl(String)をオーバーライドし、それらをまったくロードしないでください。

@Override
public void loadUrl(String url)
{
    if (url != null && !(url.startsWith("file:///android_asset") || "about:blank".equals(url)))
    {
        super.loadUrl(url);
    }
}
于 2013-02-20T23:38:26.283 に答える
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 でクリックできます。

于 2012-10-05T17:09:54.460 に答える