2012-03-01 18 views
1

webview 서비스에서 내 응용 프로그램을 만들고 다른 웹 사이트 (기본 시스템 브라우저 나 동일한 웹보기가 아닌)에서 새 URL을 열려고합니다. 나는 또한 확실히 사실 내 웹보기의 setSupportMultipleWindows했다왜 Android WebChromeClient의 onCreateWindow 메소드가 호출되지 않았습니까?

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

, 아래처럼 내 자신의 WebViewClient와 WebChromeClient를 설정합니다.
그러나 onCreateWindow는 호출되지 않습니다. 내가 놓친 것이 있습니까?
미리 감사드립니다.

+1

onCreate() 메소드는 어떻게 생겼습니까? –

+0

다른 웹보기에서 새 URL을로드하고 싶습니다. 솔직히 말해서, 어딘가에 복사했습니다. – fifth

+0

안녕하십니까. @fifth 같은 해결책을 찾았습니까? –

답변

0

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()을 호출해야한다고 생각하십니까?

2

"부모"웹뷰에 여러 개의 창이 허용되었다고 말 했나요?

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

내가 가장 많이 본 실수입니다.

0

이 줄을 코드에 추가하면 onCreateWindow()가 호출됩니다. webView.getSettings(). setSupportMultipleWindows (true);

관련 문제