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

형님들 도와주세요.. WebView SSL 오류 핸들러 해결 방법문제

0 추천

저는 개발자공부를 혼자서 하고있는 비전공자입니다..

안드로이드스튜디오로 

SslAlerDialog.java  class

클래스를 만들어서 아래내용을 넣어주었습니다.

 

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.webkit.SslErrorHandler;

 

/**

 * Created by WJK on 2016. 12. 6..

 */

 

public class SslAlertDialog {

 

    private SslErrorHandler handler = null;

    private AlertDialog dialog = null;

 

    public SslAlertDialog(SslErrorHandler errorHandler, Activity activity) {

 

        if(errorHandler == null || activity == null ) return;

 

        this.handler = errorHandler;

 

        AlertDialog.Builder builder = new AlertDialog.Builder(activity);

        builder.setMessage("ssl 인증서가 올바르지 않습니다. 계속 진행하시겠습니까?");

        builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                handler.proceed();

            }

        });

        builder.setNegativeButton("취소"new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                handler.cancel();

            }

        });

 

        dialog = builder.create();

    }

 

    public void show(){

        dialog.show();

    }

}

 

근데 이 아래부분의 코드는 어디에 넣어줘야할지 몰라서 여쭤봅니다..ㅜㅜ

어떤파일에 해당내용을 추가해야되는지 혹은 수정해야되는지 경로 혹은 파일명을 알려주시면 감사드리겠습니다..

일주일째 헤메고 있습니다.. 제발도와주세요..

 

 

@Override

public void onReceivedSslError(WebView view, SslErrorHandler handler,

                                       SslError error) {

    // TODO Auto-generated method stub

    //handler.proceed(); // 기존에 에러가나도 무조건 진행

    SslAlertDialog dialog = new SslAlertDialog(handler, WebviewActivity.this);

    dialog.show();

}

익명사용자 님이 2017년 4월 12일 질문
webView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { webView.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { super.onReceivedSslError(view, handler, error); handler.proceed(); } }

웹뷰를 연동시킬때 setWebViewClient 함수에 클래스 객체를 넣고 클래스 내부에다가 넣으면 될 것 같네요.

2개의 답변

0 추천
익명사용자 님이 2017년 4월 13일 답변
답변감사합니다만 이미 모든 블로그글은 구글링을 통해 다본상태입니다.. 시도해보지 않은 예제가 없을정도에요ㅠㅠ 저 아래 부분의 코드를 어디에 입력해줘야하는지만 알면 좋을텐데요ㅠㅠ
0 추천

  public SslAlertDialog(SslErrorHandler errorHandler, Activity activity) {

부분을

  public SslAlertDialog(SslErrorHandler errorHandler, Context context) {

로 변경해보세요

qweqweq (4,220 포인트) 님이 2017년 4월 13일 답변
...