Почему метод Android WebChromeClient onCreateWindow никогда не вызывался? - PullRequest
1 голос
/ 01 марта 2012

Я создаю свое приложение на веб-сервисе и пытаюсь открыть новый URL в другом окне (ни в системном браузере по умолчанию, ни в том же веб-браузере).Я настроил свой собственный WebViewClient и WebChromeClient, как показано ниже:

public class MyWebViewClient extends WebViewClient {  
    @Override
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        view.loadUrl(url);        
        return true;
    }
}

public class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onCreateWindow (WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        WebView childView = new WebView(view.getContext());
        final WebSettings settings = childView.getSettings();
        settings.setJavaScriptEnabled(true);
        childView.setWebChromeClient(this);
        childView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(childView);
        resultMsg.sendToTarget();
        Log.d(LOG_TAG, "onCreateWindow");   // never log
        return true;
    }
}

У меня также определенно было webview setSupportMultipleWindows в true .
Однако onCreateWindow никогда не вызывали.Я что-то пропустил?
Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 08 января 2014

Вы сказали "родительскому" веб-представлению, что разрешено несколько окон?

WebView parentWebview = (WebView) findViewById(R.id.parent_webview);
// ...
parentWebview.getSettings().setSupportMultipleWindows(true);

Это самая распространенная ошибка, которую я видел.

0 голосов
/ 30 июня 2014

добавить эту строку в код для вызова onCreateWindow () webView.getSettings (). SetSupportMultipleWindows (true);

0 голосов
/ 02 января 2014

Без полного кода трудно сказать, почему OnCreateWindow () не вызывается. В вашей деятельности метод OnCreate () у вас есть код, подобный следующему?

    // Get the main web viewer
    mWebView = (WebView) findViewById(R.id.webViewer);

    // Enable Javascript
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    // Set WebViewClient and WebChromClient
    mWebView.setWebViewClient(new MyWebViewClient());
    mWebView.setWebChromeClient(new MyWebChromeClient());

Кроме того, какой код вы используете, в котором вы думаете, OnCreateWindow() должен называться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...