웹뷰(webview) 하얗게 나오는 경우(ssl인증 무시하기)


대형 사이트들의 경우 https 통신과 

ssl 인증서가 있음으로 웹뷰를 통해서 정상적으로 

표시가 되나 없는 경우 하얗게 아무것도 안나오는 경우가 있다.

이런 경우, 그냥 통과하는 코드를 작성해주면 된다.




1. ssl 부분을 통과할 java 파일 생성 


나의 경우 SslWebViewConnect.java를 생성


import android.net.http.SslError;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;

//웹뷰 로드시 SSL 인증서 에러 방지
public class SslWebViewConnect extends WebViewClient {

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // SSL 에러가 발생해도 계속 진행!
}

public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//응용프로그램이 직접 url를 처리함
}
}



2. webview를 생성할 때 처리를 한다.



#참고 http://minaminaworld.tistory.com/84를 참고하시면 더 빠르게 이해가 가능합니다.

WebSettings webSettings = webView1.getSettings();

webSettings.setJavaScriptEnabled(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);
webSettings.setSafeBrowsingEnabled(false);
webSettings.setGeolocationEnabled(true);
webSettings.setDomStorageEnabled(true);
/*
필요한 설정은 참고
setJavaScriptEnabled(true);
// javascript를 실행할 수 있도록 설정
setJavaScriptCanOpenWindowsAutomatically (true);
// javascript가 window.open()을 사용할 수 있도록 설정
setBuiltInZoomControls(false);
// 안드로이드에서 제공하는 줌 아이콘을 사용할 수 있도록 설정
setPluginState(WebSettings.PluginState.ON_DEMAND);
// 플러그인을 사용할 수 있도록 설정
setSupportMultipleWindows(false);
// 여러개의 윈도우를 사용할 수 있도록 설정
setSupportZoom(false);
// 확대,축소 기능을 사용할 수 있도록 설정
setBlockNetworkImage(false);
// 네트워크의 이미지의 리소스를 로드하지않음
setLoadsImagesAutomatically(true);
// 웹뷰가 앱에 등록되어 있는 이미지 리소스를 자동으로 로드하도록 설정
setUseWideViewPort(true);
// wide viewport를 사용하도록 설정
setCacheMode(WebSettings.LOAD_NO_CACHE);
// 웹뷰가 캐시를 사용하지 않도록 설정
*/
webView1.setWebViewClient(new SslWebViewConnect());
//ssl 인증이 없는 경우 해결을 위한 부분
webView1.setWebChromeClient(new WebChromeClient() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
});


블로그 이미지

미나미나미

,