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

웹뷰(webview)에서 페이스북(facebook) 로그인창이 안뜨는이유?

0 추천
mWebView = new WebView(ctCtext);
RelativeLayout.LayoutParams lptvWeb_Property = new RelativeLayout.LayoutParams(
   ViewGroup.LayoutParams.MATCH_PARENT,
   ViewGroup.LayoutParams.MATCH_PARENT
   );
lptvWeb_Property.addRule(RelativeLayout.CENTER_VERTICAL);
lptvWeb_Property.addRule(RelativeLayout.CENTER_HORIZONTAL);
mWebView.setLayoutParams(lptvWeb_Property);
rlRelativeLayout.addView(mWebView);
  
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setSupportMultipleWindows(true);
  
//웹뷰 설정에서 view port 설정 여부 지정가능 : 허용하면 뷰포트가 먹는다.
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);

// 각 화면에서 스크롤바 영역이 기본적으로 잡혀있던 문제를 영역 따로 없이 화면 위에 스크롤바가 생기도록 수정.  
mWebView.setVerticalScrollbarOverlay(true);
mWebView.getSettings().setDomStorageEnabled(true);  
mWebView.addJavascriptInterface(new AndroidBridge(), "HybridApp");
  
mWebView.setWebViewClient(new HelloWebViewClient());    
mWebView.setWebChromeClient(new HelloWebChromeClient()); 


    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
         Log.i("shouldOverrideUrlLoading","url : " + url);
         
         if(url.indexOf("mailto:")>-1){ // 이메일을 선택했을 때 mailto:링크가 실행되어 페이지를 찾을 수 없는 오류 발생 방지.
          return false;
      }else if(url.indexOf("tel:")>-1){
          return false;
      }
         
            view.loadUrl(url);
//         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
//            startActivity(intent);

            return true;
        }

    private class HelloWebChromeClient extends WebChromeClient {
        
     @Override
  public void onCloseWindow(WebView window) {
   super.onCloseWindow(window);
   HybridWebView.this.finish();
  }
     @Override
  public boolean onCreateWindow(WebView view, boolean dialog,
    boolean userGesture, Message resultMsg) {
   // TODO Auto-generated method stub
   return super.onCreateWindow(view, dialog, userGesture, resultMsg);
  }
    }

웹뷰에서 페이스북 자바스크립트를 이용해서 로그인을 하려고하는데요

페이스북 로그인 버튼은 보이는데 클릭하면 아무런 반응이 없습니다.

그런데 같은페이지를 모바일 웹브라우저에서 띄우면 로그인버튼 클릭시

모바일 페이스북 로그인페이지로 넘어갑니다.

혹시 웹뷰 설정에 문제가 있는지 한번 검토 부탁드립니다.

 

 

익명사용자 님이 2015년 1월 29일 질문
혹시 해결하셨나요 ??

2개의 답변

0 추천
해당 작업을 직접 진행해본적은 없습니다만....

팝업처리를 해주시면 될 듯합니다~~!
ThisPlus (46,920 포인트) 님이 2015년 1월 29일 답변
0 추천

mWebview.pauseTimers() 를 onPause() 등 에서 사용하고 있지 않은지 확인해 보세요.

위 메소드는 앱의 전체 webview를 pause 시킵니다.

성능을 위해 사용해야 한다면 페이스북 연동 페이지 열릴때에는 예외 처리를 해주시면 될것 같습니다.

gogo (140 포인트) 님이 2015년 3월 9일 답변
...