私のAndroidアプリにロードされたグーグル検索結果リンクを含むウェブビュー、私がリンクをクリックしたとき、それは空白の画面を開いています。
結果ページのすべてのhrefリンクに添付されたonmousedownイベントと関係があると思います。
これを処理し、クリックしているリンクを実際に開くためのWebビューを作成する方法が提供されれば非常にありがたいです。
私のAndroidアプリにロードされたグーグル検索結果リンクを含むウェブビュー、私がリンクをクリックしたとき、それは空白の画面を開いています。
結果ページのすべてのhrefリンクに添付されたonmousedownイベントと関係があると思います。
これを処理し、クリックしているリンクを実際に開くためのWebビューを作成する方法が提供されれば非常にありがたいです。
ここに別の解決策があります。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/
これをスタン・テキサンの回答にコメントとして追加したかったのですが、十分な担当者ポイントがありません...
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);
これまでのところこれでうまくいきますが、すべてのシナリオでテストしたわけではありません。
私は同じ問題を抱えています。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の楽しみ:)
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);
}
}
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 でクリックできます。