IT/Android Studio

s43WebViewDemo02

Millennials 2020. 7. 7. 17:16

1)

 

 

2)

3)

이상태의 앱에서 m.naver.com 을 조작하면 

내장 브라우저로 넘어가버린다.

따라서 클릭에대한 이벤트 처리를 해줘야한다.

4)

5)백버튼에 대한 이벤트 추가

    //백버튼을 눌렀을 때 history 정보를 사용하여 이전 화면으로 이동하고 더이상 화면이 없으면 앱 종료
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()){
            //이전 화면으로 이동
            webView.goBack();
        }else if(keyCode == KeyEvent.KEYCODE_BACK && !webView.canGoBack()){
            //이전 페이지가 없기 때문에 앱종료 기능 수행
            new AlertDialog.Builder(this)
                            .setTitle("종료확인")
                            .setMessage("종료하시겠습니까?")
                            .setPositiveButton("예", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    //앱 종료
                                    finish();
                                }
                            })
                            .setNegativeButton("아니오", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {

                                }
                            })
                            .show();
        }
        return true;
    }

6)자바스크립트 사용

    private class MyWebChromeClient extends WebChromeClient{
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

            new AlertDialog.Builder(MainActivity.this)
                            .setTitle("안내")
                            .setMessage(message)
                            .setCancelable(false)
                            .setNeutralButton("닫기", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {

                                }
                            })
                            .show();
            result.confirm();
            return true;
        }
    }

onCreate 메서드에 아래 코드 추가

//자바스크립트 alert() 호출시 이벤트 연결
webView.setWebChromeClient(new MyWebChromeClient());

 

Call requires API level 21 (current min is 16)에러

 

이러한 에러 발생시

버전을 21로 바꿔준다.

 

반응형