기기에 따라서 어떤 인증기관의 인증서를 root CA로 인식하는지 다를 경우가 있다고 함.
보통 root CA 로 서명되지 않은 인증서는 에러를 발생시키는데
이러한 경우 웹뷰 페이지가 로드 되기전에 인증서 에러페이지가 로드되어 핸들러에서 캔슬 시키기 때문에 화면이 나오지 않는 것으로 파악된다.
이러한 경우 SSL 인증서 에러방지 코드를 추가 해주면 된다.
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // SSL 에러가 발생해도 계속 진행
}
해당 코드를 WebViewClient 안에서 재정의 해주면 된다.
* 이런식으로 처리할 경우 구글개발자 콘솔에서 경고메시지가 나오거나 업로드가 되지 않을 수가 있다.
이런 경우
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.notification_error_ssl_cert_invalid);
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}
유저에게 묻는 로직을 추가 하면된다. 소스 참조 : http://theeye.pe.kr/archives/2721
* 추가 내용)
특정 유저에게만 해당 ssl 에러가 발생한다면 android system webview 버전의 문제일 경우가 높다.
이 경우 안드로이드 7.0 미만 유저에겐 android system webview 의 업데이트를 7.0 이상 유저에겐 구글 앱 업데이트를 권고하면 해결된다.
'void Android' 카테고리의 다른 글
이클립스 프로젝트 안드로이드 스튜디오용으로 변환 (0) | 2016.10.04 |
---|