# Webview를 띄우는 기초와 그 웹뷰 디폴트 설정을 해주는 문서입니다.

 

먼저 mWebview = findViewById(R.id.webview); 로 웹뷰를 선언합니다.

 

이후 코드를 작성 후 설명 하겠습니다.

 

* Webview Settings

WebSettings webSettings = mWebview.getSettings();
        webSettings.setJavaScriptEnabled(true);

        mWebview.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
                new AlertDialog.Builder(view.getContext())
                        .setTitle("Alert")
                        .setMessage(message)
                        .setPositiveButton(android.R.string.ok,
                                new AlertDialog.OnClickListener(){
                                    public void onClick(DialogInterface dialog, int which) {
                                        result.confirm();
                                    }
                                })
                        .setCancelable(false)
                        .create()
                        .show();
                return true;
            }

            @Override
            public boolean onJsConfirm(WebView view, String url, String message,
                                       final JsResult result) {
                new AlertDialog.Builder(view.getContext())
                        .setTitle("Confirm")
                        .setMessage(message)
                        .setPositiveButton("Yes",
                                new AlertDialog.OnClickListener(){
                                    public void onClick(DialogInterface dialog, int which) {
                                        result.confirm();
                                    }
                                })
                        .setNegativeButton("No",
                                new AlertDialog.OnClickListener(){
                                    public void onClick(DialogInterface dialog, int which) {
                                        result.cancel();
                                    }
                                })
                        .setCancelable(false)
                        .create()
                        .show();
                return true;
            }
        });
        mWebview.loadUrl("http://wwwn.anver.com");

 

 


 

* KeyDown

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if(keyCode == KeyEvent.KEYCODE_BACK){
            if(mWebview.canGoBack()){
                mWebview.goBack();
                return false;
            }
        }

        return super.onKeyDown(keyCode,event);
    }

 

 

따라 작성하시면 되는데 위에 웹뷰 세팅이 왜 필요하냐하면

맨처음 웹뷰를 띄우기만 하는 디폴트에는 크롬 클라이언트를 사용하지도 않고, 

자바스크립트가 허용되지도 않으며, 아래 세가지 항목의 기능이 작동하지 않아 세팅을 해주었습니다.

 

1) 화면을 가로/세로 모드로 변환하면 다시 페이지를 로딩함

2) 안드로이드의 Back 버튼을 누르면 바로 앱이 종료됨 (이전 페이지가 있으면 그 곳으로 이동하는 것이 일반적인 기대)

3) Alert이나 Confirm과 같은 Popup이 전혀 보이지 않음

 

 

# http또한 접속이 가능하게 하려면 매니페스트 파일에 application 부분에 이 코드를 추가하시면 됩니다.

   android:usesCleartextTraffic="true"

 

# 맨 위 소스에서 웹뷰를 앱 외부가 아닌 내부에서 실행하고 싶으시면 이 코드를 추가하시면 됩니다.

mWebview.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url){
                view.loadUrl(url);
                return true;
            }
        });


참고 출처: http://zeany.net/5 [소소한 IT 이야기]

+ Recent posts