홈으로 홈으로 | 무료회원가입 | 아이디/비번찾기 | 즐겨찾기
추천음악방송메인홈1대1상담음악방송청취
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)
음악가사 검색
온라이브스토어(앱다운로드)
온라이브(방송등록및청취)
비디오 베스트 50
금영노래방
TJ노래방
유튜브 동영상 다운로드
POP Player
신나는 고스톱
컴퓨터 오목
작은 음악다방
운.영.자.1대1.상담
FAQ\지원.프로그램
Q&A\고.객.지.원

자동러시 웹플레이어신청

보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
WebViewClient [Android]
2년 전
ebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
// 각종 알림 및 요청을 받게되는 WebViewClient를 설정합니다. - option
webView.setWebViewClient(new CustomWebViewClient());
// 크롬 핸들러 설정. 이 핸들러는 자바 스크립트 대화 상자, favicon, 제목과 진행상황 처리에
// 사용하기 위해 WebChromeClient을 구현한 것입니다. - option
webView.setWebChromeClient(new CustomWebChormeClient());
webView.loadUrl("...");

private class CustomWebViewClient extends WebViewClient {

    /** ↓↓ WebView에서 처음 한 번만 호출되는 메쏘드 ↓↓
     * 페이지 로딩이 시작된 것을 알립니다. 이 메쏘드가 각각의 main frame이 iframe에
     * 페이지를 로드하기 위해 한번 호출되거나  frameset이 main frame에 대해 이 메쏘드를
     * 한번 호출할 것 입니다. 이 메쏘드가 임베디드 프레임 내용이 변경되었을 때 호출되지
     * 않는다는 것도 뜻합니다. 예를 들면, iframe이 있는 대상 링크를 클릭한 것 입니다.
     * /
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }
  
    /**
     * WebView가 주어진 URL로 지정된 리소스를 로드할 것이라고 알립니다.
     * 페이지 로딩이 완료될 때까지 여러번 호출됩니다. 페이지가 나뉘어서 로딩되나 봅니다.
     * /
    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }
  
    /**
     * 방문한 링크를 데이터베이스에 업데이트한다고 알립니다.
     * /
    @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
*/
  
    /** ↓↓ WebView에서 처음 한 번만 호출되는 메쏘드 ↓↓
     * 페이지 로딩이 완료된 것을 알립니다. 이 메쏘드는 메인 프레임에 대해서만 호출됩니다.
     * 이 메쏘드가 호출되었을 때, picture rendering은 아직 업데이트되지 않을 수 있습니다.
     * 새로운 Picture가 있다는 사실을 알기위해, onNewPicture(WebView, Picture) 메쏘드를
     * 사용합니다.
     * /
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }
  
    /**
     * As the host application if the browser should resend data as the requested page
     * was a result of a POST. 기본적으론 데이터를 재발송하지 않는 것입니다.
     * /
    @Override
    public void onFormResubmission(WebView view, Message dontResend,
            Message resend) {
        super.onFormResubmission(view, dontResend, resend);
    }
  
    /**
     * 호스트 응용 프로그램에게 오류를 보고합니다. 이러한 오류는 복구할 수 없습니다.
     * (예, main resource를 사용할 수 없는 상태) errorCode 매개 변수는
     * WebViewClient.ERROR_* 상수 중 하나에 해당합니다.
     * /
    @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가 지원되지 않는 방식
        }
    }
  
    /**
     * 인증 요청을 처리한다고 알립니다. 기본 동작은 요청을 취소하는 것입니다.
     * /
    @Override
    public void onReceivedHttpAuthRequest(WebView view,
            HttpAuthHandler handler, String host, String realm) {
        super.onReceivedHttpAuthRequest(view, handler, host, realm);
    }
  
    /**
     * WebView가 변화하기위해 scale이 적용된다고 알립니다.
     * /
    @Override
    public void onScaleChanged(WebView view, float oldScale, float newScale) {
        super.onScaleChanged(view, oldScale, newScale);
    }

    /**
     * 이 메쏘드는 사용이 중지되었습니다. 이 메쏘드는 더이상 호출되지 않습니다.
     * WebView가 재시작된 루프를 발견하면, 로드가 취소됩니다
     * /
    @Override
    public void onTooManyRedirects(WebView view, Message cancelMsg,
            Message continueMsg) {
        super.onTooManyRedirects(view, cancelMsg, continueMsg);
    }

    /** ↓↓ 잘못된 키 입력이 있을 경우 호출되는 메쏘드 ↓↓
     * 키가 WebView에 의해 처리되지 않았음을 호스트 응용 프로그램에게 알림.
     * 시스템 키를 제외하고, WebView는 shouldOverrideKeyEvent가 true를 반환하는 경우나
     * 일반적인 flow에서 항상 키 이벤트를 처리합니다. 키 이벤트가 발생된 곳으로 부터
     * 비동기적으로 호출됩니다. 호스트 응용 프로그램에게 처리되지 않은 키 이벤트를 처리할
     * 기회를 제공합니다.
     * /
   @Override
   public void onUnhandledKeyEvent(WebView view, KeyEvent event) {

      super.onUnhandledKeyEvent(view, event);
   }
  
    /** ↓↓ 잘못된 키 입력이 있을 경우 호출되는 메쏘드 ↓↓
     * 호스트 응용 프로그램에게 동기적으로 키 이벤트를 처리할 기회를 줍니다. 예: 메뉴 바로
     * 가기 키 이벤트를 이런식으로 필터링해야합니다. true를 반환할 경우, WebView는 키 이벤트를
     * 처리하지 않습니다. false를 반환할 경우, WebView 항상 키 이벤트를 처리합니다. So none
     * of the super in the view chain will see the key event. 기본 동작은 false를 반환합니다.
     * /
    @Override
    public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
        return super.shouldOverrideKeyEvent(view, event);
    }
  
    /**
     * 새로운 URL이 현재 WebView에 로드되려고 할 때 호스트 응용 프로그램에게 컨트롤을
     * 대신할 기회를 줍니다. WebViewClient가 제공되지 않으면, 기본적으로 WebView는 URL에
     * 대한 적절한 핸들러를 선택하려고 Activity Manager에게 물어봅니다. WebViewClient가
     * 제공되면, 호스트 응용 프로그램이 URL을 처리한다는 의미인 true를 반환거나 현재
     * WebView가 URL을 처리한다는 의미인 false를 반환합니다.
     * /
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }
}
[출처] Android WebViewClient 사용하기 1/2|작성자 jolangma





WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
// 각종 알림 및 요청을 받게되는 WebViewClient를 설정합니다. - option
webView.setWebViewClient(new CustomWebViewClient());
// 크롬 핸들러 설정. 이 핸들러는 자바 스크립트 대화 상자, favicon, 제목과 진행상황 처리에
// 사용하기 위해 WebChromeClient을 구현한 것입니다. - option
webView.setWebChromeClient(new CustomWebChormeClient());
webView.loadUrl(url);

private class CustomWebChormeClient extends WebChromeClient {

    /**
     * 페이지를 로딩하는 현재 진행 상황을 전해줍니다.
     * newProgress  현재 페이지 로딩 진행 상황, 0과 100 사이의 정수로 표현.(0% ~ 100%)
     */
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        Log.i("WebView", "Progress: " + String.valueOf(newProgress));
        super.onProgressChanged(view, newProgress);
    }
/* 결과 :
Progress: 10
Progress: 15
Progress: 35
...
Progress: 76
Progress: 100
*/

    /**
     * 현재 페이지에 새로운 favicon이 있다고 알립니다.
     * icon 현재 페이지의 favicon이 들어있는 비트맵  
     */
    @Override
    public void onReceivedIcon(WebView view, Bitmap icon) {
        super.onReceivedIcon(view, icon);
    }
/*
favicon이란:
일반적으로 웹 브라우저의 URL이 표시되기 전에 특정 웹사이트와 관련된 16 × 16 픽셀 아이콘
*/

    /**
     * 문서 제목에 변경이 있다고 알립니다.
     * title  문서의 새로운 타이틀이 들어있는 문자열  
     */
    @Override
    public void onReceivedTitle(WebView view, String title) {
        super.onReceivedTitle(view, title);
    }
/*  아래처럼 title 태그 사이의 값을 가져옵니다.
<title> LG텔레콤 전자결제 서비스 </title>
*/

    @Override
    public Bitmap getDefaultVideoPoster() {
        return super.getDefaultVideoPoster();
    }

    @Override
    public View getVideoLoadingProgressView() {
        return super.getVideoLoadingProgressView();
    }

    @Override
    public void getVisitedHistory(ValueCallback<String[]> callback) {
        super.getVisitedHistory(callback);
    }

    @Override
    public void onCloseWindow(WebView window) {
         super.onCloseWindow(window);
    }

    @Override
    public void onConsoleMessage(String message, int lineNumber, String sourceID) {
        super.onConsoleMessage(message, lineNumber, sourceID);
    }

    @Override
    public boolean onCreateWindow(WebView view, boolean dialog,
            boolean userGesture, Message resultMsg) {
         return super.onCreateWindow(view, dialog, userGesture, resultMsg);
    }

    @Override
    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
            long currentQuota, long estimatedSize, long totalUsedQuota,
            QuotaUpdater quotaUpdater) {
        super.onExceededDatabaseQuota(url, databaseIdentifier, currentQuota,
                estimatedSize, totalUsedQuota, quotaUpdater);
    }

    @Override
    public void onGeolocationPermissionsHidePrompt() {
         super.onGeolocationPermissionsHidePrompt();
    }

    @Override
    public void onGeolocationPermissionsShowPrompt(String origin,
            Callback callback) {
         super.onGeolocationPermissionsShowPrompt(origin, callback);
    }

    @Override
    public void onHideCustomView() {
        super.onHideCustomView();
    }

    /**
     * 자바 스크립트 경고 대화 상자를 디스플레이한다고 클라이언트에게 알려줍니다.
     * 클라이언트가 true를 반환할 경우, WebView는 클라이언트가 대화 상자를 처리할 수 있다고
     * 여깁니다. 클라이언트가 false를 반환할 경우, WebView는 실행을 계속합니다.
     * /
    @Override
    public boolean onJsAlert(WebView view, String url, String message,
            JsResult result) {
         return super.onJsAlert(view, url, message, result);
    }

    /**
     * 현재 페이지에서 나와 탐색을 확정하는 대화 상자를 디스플레이한다고 클라이언트에게
     * 알려줍니다. 이것은 자바 스크립트 이벤트 onbeforeunload()의 결과입니다. 클라이언트가
     * true를 반환하는 경우, WebView는 클라이언트가 대화 상자를 처리하고 적절한 JsResult
     * 메쏘드를 호출할 것이라고 여깁니다. 클라이언트가 false를 반환하는 경우, true의 기본값은
     * 현재 페이지에서 나와 탐색하기를 수락하기 위한 자바 스크립트를 반환하게 될 것입니다.
     * 기본 동작은 false를 반환하는 것입니다. JsResult를 true로 설정한 것은 현재 페이지에서 나와
     * 탐색할 것이고 false로 설정한 것은 탐색을 취소할 것입니다.
     * /
    @Override
    public boolean onJsBeforeUnload(WebView view, String url,
            String message, JsResult result) {
        return super.onJsBeforeUnload(view, url, message, result);
    }

    /**
     * 사용자에게 확인 대화 상자를 디스플레이한다고 클라이언트에게 알려줍니다. 클라이언트가
     * true를 반환하는 경우, WebView는 클라이언트가 확인 대화 상자를 처리하고 적절한
     * JsResult 메쏘드를 호출할 수 있다고 여깁니다. 클라이언트가 false를 반환하는 경우 false의
     * 기본값은 자바 스크립트로 반환될 것 입니다. 기본 동작은 false를 반환하는 것입니다.
     * /
    @Override
    public boolean onJsConfirm(WebView view, String url, String message,
            JsResult result) {
         return super.onJsConfirm(view, url, message, result);
    }

    /**
     * 사용자에게 프롬프트 대화 상자를 디스플레이한다고 클라이언트에게 알려줍니다.
     * 클라이언트가 true를 반환하는 경우, WebView는 클라이언트가 확인 대화 상자를 처리하고
     * 적절한 JsResult 메쏘드를 호출할 수 있다고 여깁니다. 클라이언트가 false를 반환하는 경우
     * false의 기본값은 자바 스크립트로 반환될 것 입니다. 기본 동작은 false를 반환하는 것입니다.
     * /
    @Override
    public boolean onJsPrompt(WebView view, String url, String message,
            String defaultValue, JsPromptResult result) {
          return super.onJsPrompt(view, url, message, defaultValue, result);
    }

    /**
     * 자바 스크립트 실행 제한 시간을 초과했다고 클라이언트에게 알려줍니다. 그리고
     * 클라이언트가 실행을 중단할지 여부를 결정할 수 있습니다. 클라이언트가 true를 반환하는
     * 경우, 자바 스크립트가 중단됩니다. 클라이언트가 false를 반환하는 경우, 계속 실행됩니다.
     * 참고로 지속적인 실행 상태에서는 제한 시간 카운터가 재설정되고  스크립트가 다음 체크
     * 포인트에서 완료되지 않을 경우 계속 콜백되어질 것집니다.
     * /
    @Override
    public boolean onJsTimeout() {
        return super.onJsTimeout();
    }

  

    @Override
    public void onReachedMaxAppCacheSize(long spaceNeeded,
            long totalUsedQuota, QuotaUpdater quotaUpdater) {
        super.onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota, quotaUpdater);
    }

    

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

    @Override
    public void onRequestFocus(WebView view) {
        super.onRequestFocus(view);
    }

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        super.onShowCustomView(view, callback);
    }

}
추천추천 : 137 추천 목록
번호 제목
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]
1,295
 http requestWebViewClient [Android]
1,294
 캐시 삭제
1,293
 캐시 지우기 [Android]
1,292
 바로풀어(수학 문제 질의응답 SNS) 에 사용된 오픈소스 라이브러리 [Android]
1,291
 Webviw [Android]
1,290
 오픈소스 라이브러리 모음 [Android]
1,289
 Android webview 개발시 알아둬야 할 것들 [Android]
1,288
 webview 동영상 재생 [Android]
1,287
 [Android] Webview 404 에러 처리
1,286
 [Android] webview ssl 문제
1,285
 [Android] Webview url 숨기기
1,284
 [Android] AlarmManager 일정시간 이벤트 실행
1,283
 안드로이드 오픈소스 끝판
1,282
 android studio DefaultHttpClient, HttpClient import 에러
1,281
 [Android] Webview 메소드
목록
인기절정뽕짝파티
트로트재생목록
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
JP\CN
POP TOP BEST
K.R.노래방

추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
가요1번지(종합)
뮤직하우스
동요\연변\반주\기타
가요축제\트롯1번지
댄스\메들리\리믹스
카페\명상\경음악\기타
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.