마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

어플내에서 새창을 띄우는 방법??

0 추천
public void setWebViewSetting() {
  webView.setWebViewClient(new WebViewClient());
  webView.setWebChromeClient(new WebChromeClient() {
   @Override
      public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, android.os.Message resultMsg) {
  
              WebView newWebView = new WebView(MainActivity.this);
              view.addView(newWebView);
              WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
              transport.setWebView(newWebView);
              resultMsg.sendToTarget();
  
               return true;
      };
      public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
      {
          new AlertDialog.Builder(MainActivity.this)
              .setTitle("AlertDialog")
              .setMessage(message)
              .setPositiveButton(android.R.string.ok,
                      new AlertDialog.OnClickListener()
                      {
                          public void onClick(DialogInterface dialog, int which)
                          {
                              result.confirm();
                          }
                      })
              .setCancelable(false)
              .create()
              .show();
  
          return true;
      };
  });
  
  WebSettings webSettings = webView.getSettings();
  webSettings.setJavaScriptEnabled(true);
  
  ///
  webSettings.setBuiltInZoomControls(true);
  webSettings.setSupportZoom(true);
    
    
  webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
  webSettings.setSupportMultipleWindows(true);
  webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
  webSettings.setBlockNetworkImage(false);
  webSettings.setLoadsImagesAutomatically(true);
  webSettings.setUseWideViewPort(true);
  webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

 

웹뷰 어플을 만들고 있는 왕왕초보입니다.

어플내에서 새창을 띄워야 하는데 (주소 입력 하는것 아시죠?) 소스를 위에처럼 입력했더니

어플내에서가 아니라 외부 팝업창으로 뜹니다. 입력후에도 창이 닫히지 않고 어플내로 입력도 안되네요

구글링으로 어찌어찌 해당 소스까지는 왔는데 더이상은 찾아도 없는듯하고 봐도 솔직히 잘 모르겠네요 ㅜㅜ

웹사이트가 제가 직접 만든게 아니라 사이트내의 window.open 소스를 수정할 수는 없습니다.

1. 어플내에서 새창을 띄우기

2. 입력값을 다시 부모페이지로 입력 (새창은 닫힘)

이게 문제인데 저 소스에서 어떤 부분을 수정해야 할지 좀 알려주세요 고수님들

맨티스 (160 포인트) 님이 2015년 4월 6일 질문

1개의 답변

0 추천

newWebView에 setWebChromeClient하나 더 만들어주시고.

추가한 WebChromeClient에 

 @Override
  public void onCloseWindow(WebView window) {
        window.setVisibility(View.GONE);
       메인웹뷰.removeView(window);
  }
 
추가해서 처리해 주세요.
 
그리고 뒤로 가기버튼 시에도 추가한 뷰(팝업)을 제거해줘야 하기때무에 
backkey이벤트 잡아서 추가한 뷰가 있으면 removeView를 해주셔야 합니다.
이드로이드 (22,930 포인트) 님이 2015년 4월 6일 답변
WebView newWebView = new WebView(MainActivity.this);
newWebView.setWebChromeClient(new WebChromeClient() {
 @Override
  public void onCloseWindow(WebView window) {
        window.setVisibility(View.GONE);
       메인웹뷰.removeView(window);
  }
});
메인웹뷰.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
...