홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송 메인홈 1대1상담
운.영.자.1대1.상담
온라이브음악방송
온라이브스토어(앱다운로드)
아리랑가요(무료음악채널)
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)

환상의뽕짝파티 무료음악
명작트로트메들리 무료음악
트로트메들리관광 무료음악
보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
[Android] Webview 메소드
3년 전
        먼저  WebView의  만드는  방법을  알아  봤다.

        근데  WebView를  만든뒤에  확인해  보면  WebView에서  새로운  Url  접속이  일어  날면

        새로운  창이  뜨는걸  볼  수  있다.  이는  기본적으로  WebView에서  새로운  Url  접속시

        시스템에서  새로운  창에다가  로딩하도록  시키는  것인데,  이것이  한두번씩  많아지면

        메모리  관리상에도  별로  도움이  안된다.  그럼  어찌해야  될까..

        그래서  있는  것이  WebViewClient  와  WebChromeClient  이다.

        이번  장에는  webViewClient  class  에  대해서  알아보자.  

        일단  WebViewClient  는  새로운  Class에  WebViewClient를  상속  받아서  만들어도  되고

        private  class  WebClientClass  extends  WebViewClient  {
                ~~~~~~  내용  ~~~~~~~~~~~~~~~~~~~~~~
        }

        내부에서  new로  생성해도  된다.

        WebView.setWebViewClient(new  WebViewClient(){
                ~~~~~~  내용  ~~~~~~~~~~~~~~~~~~~~~~
        }

        WebViewClient  Class  함수들에  대해서  알아보자.

        
        1.  onPageStarted()
        
        
        로딩이  시작될때..

        WebView에서  처음  한  번만  호출되는  메쏘드  페이지  로딩이  시작된  것을  알립니다.  

        
  
        @Override
        public  void  onPageStarted(WebView  view,  String  url,  Bitmap  favicon)  {
                super.onPageStarted(view,  url,  favicon);
        }
        




        
        2.  onLoadResource()
        

        WebView가  주어진  URL로  지정된  리소스를  로드할  것이라고  알립니다.

        페이지  로딩이  완료될  때까지  여러번  호출됩니다.  페이지가  나뉘어서  로딩되나  봅니다.

        
  
        @Override  
        public  void  onLoadResource(WebView  view,  String  url)  {
                super.onLoadResource(view,  url);
        }
        

      

        
        3.  doUpdateVisitedHistory()
        

        방문한  링크를  데이터베이스에  업데이트한다고  알립니다.

        
  
        @Override
        public  void  doUpdateVisitedHistory(WebView  view,  String  url,  boolean  isReload)  {  
                Log.i("WebView",  "History:  "  +  url  );
                super.doUpdateVisitedHistory(view,  url,  isReload);
        }
        

    
        /*  결과  (url이  변할  때  마다)
        History:  http://www.abc.com/djfk...
        History:  http://www.abc.com/djfk.../fdfd
        */

    
        
        4.  onPageFinished()
        

        WebView에서  처음  한  번만  호출되는  메쏘드.  페이지  로딩이  완료된  것을  알립니다.

        
  
        @Override
        public  void  onPageFinished(WebView  view,  String  url)  {
                super.onPageFinished(view,  url);
        }
        

    

        
        5.  onReceivedError()
        
    
        호스트  응용  프로그램에게  오류를  보고합니다.  이러한  오류는  복구할  수  없습니다.

        웹뷰는  인터넷이  열결되어  있지  않았을때  주소가  노출되는  단점이  있다.  이럴경우  url주소를  보안상  노출되면  안되기  때문에  숨길경우  사용하면  유용할  것  같다.

        
  
        @Override
        public  void  onReceivedError(WebView  view,  int  errorCode,String  description,  String  failingUrl)  {
                super.onReceivedError(view,  errorCode,  description,  failingUrl);

                switch(errorCode)  {
                        case  ERROR_AUTHENTICATION:  break;                              //  서버에서  사용자  인증  실패
                        case  ERROR_BAD_URL:  break;                                                      //  잘못된  URL
                        case  ERROR_CONNECT:  break;                                                    //  서버로  연결  실패
                        case  ERROR_FAILED_SSL_HANDSHAKE:  break;        //  SSL  handshake  수행  실패
                        case  ERROR_FILE:  break;                                                                    //  일반  파일  오류
                        case  ERROR_FILE_NOT_FOUND:  break;                              //  파일을  찾을  수  없습니다
                        case  ERROR_HOST_LOOKUP:  break;                      //  서버  또는  프록시  호스트  이름  조회  실패
                        case  ERROR_IO:  break;                                                            //  서버에서  읽거나  서버로  쓰기  실패
                        case  ERROR_PROXY_AUTHENTICATION:  break;      //  프록시에서  사용자  인증  실패
                        case  ERROR_REDIRECT_LOOP:  break;                              //  너무  많은  리디렉션
                        case  ERROR_TIMEOUT:  break;                                                    //  연결  시간  초과
                        case  ERROR_TOO_MANY_REQUESTS:  break;          //  페이지  로드중  너무  많은  요청  발생
                        case  ERROR_UNKNOWN:  break;                                                //  일반  오류
                        case  ERROR_UNSUPPORTED_AUTH_SCHEME:  break;  //  지원되지  않는  인증  체계
                        case  ERROR_UNSUPPORTED_SCHEME:  break;                    //  URI가  지원되지  않는  방식
                }
        }
        


    

        
        6.  onReceivedHttpAuthRequest()
        
    
          *  인증  요청을  처리한다고  알립니다.  기본  동작은  요청을  취소하는  것입니다.  (http  인증요청이  있을  경우)

        
  
        @Override
        public  void  onReceivedHttpAuthRequest(WebView  view,HttpAuthHandler  handler,  String  host,  String  realm)  {
                super.onReceivedHttpAuthRequest(view,  handler,  host,  realm);
        }
        


        
        6.  onScaleChanged()
        
    
          스케일이  변경되었을  때  처리할  내용을  구현한다.  (확대나  크기등이  변화  있을  경우)

        
  
        @Override
        public  void  onScaleChanged(WebView  view,  float  oldScale,  float  newScale)  {
                super.onScaleChanged(view,  oldScale,  newScale);
        }
        


        
        7.  onUnhandledKeyEvent()
        
    
        잘못된  키  입력이  있을  경우  호출되는  메쏘드
        
        시스템  키를  제외하고,  WebView는  shouldOverrideKeyEvent가  true를  반환하는  경우나
        
        일반적인  flow에서  항상  키  이벤트를  처리합니다.  키  이벤트가  발생된  곳으로  부터  

        비동기적으로  호출됩니다.

        
  
        @Override
        public  void  onUnhandledKeyEvent(WebView  view,  KeyEvent  event)  {  
                super.onUnhandledKeyEvent(view,  event);
        }
        




        
        8.  shouldOverrideKeyEvent()
        
    
        사용자의  키  입력이  있을  경우  호출되는  메쏘드
        
        시스템  키를  제외하고,  WebView는  shouldOverrideKeyEvent가  true를  반환하는  경우나
        
        일반적인  flow에서  항상  키  이벤트를  처리합니다.  키  이벤트가  발생된  곳으로  부터  

        비동기적으로  호출됩니다.

        
  
        @Override
        public  void  shouldOverrideKeyEvent(WebView  view,  KeyEvent  event)  {  
                return  super.shouldOverrideKeyEvent(view,  event);
        }
        


        (예제)  shouldOverrideKeyEvent()
        ------------------------------------------------------------------------
        
  
        @Override
        public  boolean  shouldOverrideKeyEvent(WebView  view,  KeyEvent  event)  {  
                int  keyCode  =  event.getKeyCode();
                Log.d("HelloWebViewClient","####  shouldOverrideKeyEvent()    "  +  keyCode);    

                if  ((keyCode  ==  KeyEvent.KEYCODE_DPAD_LEFT)  &&  webview.canGoBack())  {
                        webview.goBack();        //취소버튼시  전  페이지로  간다.
                        return  true;
                }else  if  ((keyCode  ==  KeyEvent.KEYCODE_DPAD_RIGHT)  &&  webview.canGoForward())  {
                        webview.goForward();        //오른쪽  버튼시  앞  페이지로  간다.
                        return  true;
                }
                
                return  false;
        }
        



        
        9.  shouldOverrideUrlLoading()
        
        
        새로운  URL이  현재  WebView에  로드되려고  할  때  호스트  응용  프로그램에게  컨트롤을  대신할  기회를  줍니다

        
  
        public  boolean  shouldOverrideUrlLoading(WebView  view,  String  url)  {
                //return  super.shouldOverrideUrlLoading(view,  url);
                view.loadUrl(url);
                return  true;
        }
        
추천추천 : 143 추천 목록
번호 제목
1,320
 윈도우 10 기본 앱 삭제 및 복구
1,319
 meta 태그 http-equiv 설정방법과 차이점
1,318
 구글(Google)검색에서 고급연산자를 이용하여 많은 정보를 얻는 방법
1,317
 프로그램 없이 하드디스크 복사 및 백업하기
1,316
 Windows7 업데이트 기록 삭제방법
1,315
 포토샵 psd 파일 연결 레지스트리(registry) 편집
1,314
 윈도 10 최신 업데이트 후 인터넷 속도의 저하가 발생할 때 조치 사항
1,313
 Autotuning level 해제 (윈도우비스타 이상 윈도우)인터넷 속도 빠르게 하는 방법
1,312
 윈도우에서 특정프로세스를 일괄 종료하는법
1,311
 MediaPlayer 클래스 사용법
1,310
 안드로이드에서 audio player 실행하기
1,309
 [Android] MediaPlayer 음악재생기 만들기
1,308
 Eclipse와 Android NDK 연동하기
1,307
 Android Sliding Drawer Functionality 안드로이드 슬라이딩 드로우 예제 sample
1,306
 Android Speech To Text
1,305
 Android WebPageLoader with progress-bar
1,304
 Android Text To Speech(TTS)
1,303
 Android Playing Audio from a web url
1,302
 Button height different from background height in Android image design
1,301
 Android Getting Started with Material Design
1,300
 Using toast inside timertask perfect
1,299
 네트워크 상태 [Android]
1,298
 Webview source [Android]
1,297
 공유 Intent [Android]
1,296
 intent uri 모음 [Android]
목록
추억의가요방(가사포함)
인기절정뽕짝파티
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
세월따라노래따라
가슴시린트로트
트로트쌍쌍파티
7080추억속으로
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
POP TOP BEST

최신인기가요특집
추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.