WebView + WebChromeClient méthode onCreateWindow non appelée pour target = "_ blank"

Je suis en train de développer un custom browser avec WebView utilisant Android API level 10 (sdk 2.3.3), malheureusement, je ne sais pas comment faire pour intercepter la demande de la webpagepour ouvrir l'URL dans une nouvelle fenêtre de navigateur, tels les robinets sur les liens avec target="_blank".

En conformité avec les API Doc j'ai annulé la onCreateWindow de WebChromeClientmais n'est pas appelée lorsqu'un tel lien est exploité. Pourrait être un bug de cette API? Je suis également primordial shouldOverrideUrlLoading pour éviter WebView ouverture ultérieure des liens dans le navigateur intégré.

Voici mon exemple de code qui ouvre google.com. Pour le tester, appuyez sur "News", puis appuyez sur n'importe quel titre de la news. Android navigateur intégré normalement s'ouvre dans une nouvelle browser window.

package com.myexample;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class HelloAndroidActivity extends Activity {

  private static String TAG = "WebViewTest";
  private WebView mWebView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG, "onCreate");
    setContentView(R.layout.main);

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

    mWebView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
      }
    });

    mWebView.setWebChromeClient(new WebChromeClient() {
      @Override
      public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
        Toast.makeText(getApplicationContext(), "OnCreateWindow", Toast.LENGTH_LONG).show();
        return true;
      }
    });
    mWebView.loadUrl("http://www.google.com");
  }

}

source d'informationauteur Lotzy | 2011-12-20