android ÇöÀç WebView¿¡¼ ¿ÜºÎ ÆäÀÌÁö ºÒ·¯¿À±â - WebView »õâ ¶ç¿ìÁö ¾Ê±â - WebViewClient |
|
|
 |
8³â Àü |
WebView ¿¡¼ ¿ÜºÎ ÆäÀÌÁö¸¦ ºÒ·¯¿À·Á°í loadUrl ÇÔ¼ö¸¦ »ç¿ëÇß´õ´Ï °©Àڱ⠿ܺΠºê¶ó¿ìÀú¸¦ ½ÇÇà½ÃŲ ÀûÀÌ ÀÖ´Ù.
WebView ¾È¿¡¼ À¥ ÆäÀÌÁö¸¦ µ¹¾Æ´Ù³à¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ¾ú´Ù.
óÀ½ ¿¢Æ¼ºñƼ¿¡ ·ÎµåÇÒ °æ¿ì¿¡´Â ¹®Á¦°¡ ¾øÁö¸¸ WebView »ó¿¡¼ ÆäÀÌÁö À̵¿ÀÌ ÀϾ °Ü¿ì º¸Åë µð¹ÙÀ̽ºÀÇ ºê¶ó¿ìÀú·Î ½ÇÇàµÈ´Ù.
ÀÌ °æ¿ì¿¡´Â WebViewClient ÀÇ shouldOverrideUrlLoading ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¾ÆÁÖ °£´ÜÇÏ°Ô ÇØ°áµÈ´Ù.
½±°Ô ¸»Çؼ loadUrl ·Î È£ÃâÇÏ´ø ¹æ¹ýÀ» WebViewClient ¿¡¼ ´ë½Å È£ÃâÇÑ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù.
WebViewClient ¿¡ ´ëÇؼ´Â ¾Ë¾ÆµÎ¸é ÁÁÀ¸´Ï WebViewClientÀÇ Override ¸Þ¼Òµåµéµµ ÇÔ²² °£´ÜÇÏ°Ô »ìÆ캸°Ú´Ù.
Override ¸Þ¼ÒµåµéÀº onPageStarted, onLoadResource, doUpdateVisitedHistory, onPageFinished, onReceivedError, onReceivedHttpAuthRequest, onScaleChanged, shouldOverrideKeyEvent, shouldOverrideUrlLoading µîÀÌ Àִµ¥ ¾Æ·¡ ¼Ò½º¿¡¼ ¼³¸íÇÑ´Ù.
»ç¿ë¹æ¹ýÀÌ´Ù.
¸ÕÀú webView¿¡ Client¸¦ ¿¬°áÇØ ÁØ´Ù.
webView.setWebViewClient(new MyWebViewClient());
´ÙÀ½À¸·Î´Â MyWebViewClient ¶ó´Â Ŭ·¡½º¸¦ »ý¼ºÇÑ´Ù. ¹°·Ð WebViewClient¸¦ »ó¼Ó¹Þ¾Æ¾ß ÇÑ´Ù.
import android.graphics.Bitmap;
import android.view.KeyEvent;
import android.webkit.HttpAuthHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient {
// ·ÎµùÀÌ ½ÃÀÛµÉ ¶§
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
// ¸®¼Ò½º¸¦ ·ÎµåÇÏ´Â Áß ¿©·¯¹ø È£Ãâ
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
// ¹æ¹® ³»¿ªÀ» È÷½ºÅ丮¿¡ ¾÷µ¥ÀÌÆ® ÇÒ ¶§
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);
}
// ·ÎµùÀÌ ¿Ï·á됬À» ¶§ Çѹø È£Ãâ
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, 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°¡ Áö¿øµÇÁö ¾Ê´Â ¹æ½Ä
}
}
// http ÀÎÁõ ¿äûÀÌ ÀÖ´Â °æ¿ì, ±âº» µ¿ÀÛÀº ¿äû Ãë¼Ò
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
// È®´ë³ª Å©±â µîÀÇ º¯È°¡ ÀÖ´Â °æ¿ì
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
}
// À߸øµÈ Å° ÀÔ·ÂÀÌ ÀÖ´Â °æ¿ì
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
return super.shouldOverrideKeyEvent(view, event);
}
// »õ·Î¿î URLÀÌ webview¿¡ ·ÎµåµÇ·Á ÇÒ °æ¿ì ÄÁÆ®·ÑÀ» ´ë½ÅÇÒ ±âȸ¸¦ ÁÜ
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
°¢ Overrid ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀº ÁÖ¼®À¸·Î ´ëüÇÑ´Ù.
¼Ò½º¿¡ ÀÖ´Â ÁÖ¼®À» º¸¸é ¾Ë°ÚÁö¸¸ Override µÇ´Â ÇÔ¼ö´Â ¿©·¯°³ÀÌ´Ù. webview¸¦ ÄÁÆ®·Ñ Çϱâ À§Çؼ´Â À§ ÇÔ¼öµéÀÌ ²Ï À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù.
ÇÏÁö¸¸ ¸ðµÎ Çʼö´Â ¾Æ´Ï´Ï ÇÊ¿äÇÑ ÇÔ¼öµé¸¸ »ó¼Ó¹Þ¾Æ¼ »ç¿ëÇÏ¸é µÈ´Ù. ¸ðµÎ Àû¾î³õÀº ÀÌÀ¯´Â Ȥ½Ã³ª ÇÊ¿äÇÒ °æ¿ì Âü°íÇϱâ À§Çؼ ÀÌ´Ù.
´Ù½Ã º»·ÐÀ¸·Î µ¹¾Æ¿Í¼ ¼Ò½º °¡Àå ¸¶Áö¸·¿¡ ÀÖ´Â shouldOverrideUrlLoading ¿¡ ´ëÇؼ »ìÆ캻´Ù.
ÀÌ ÇÔ¼ö´Â WebView ¿¡ »õ·Î¿î UrlÀÌ ·ÎµåµÉ·Á°í ÇÒ °æ¿ì ½ÇÇàµÈ´Ù.
»õ·Î¿î UrlÀÌ È£Ã⠵Ǵ ±âȸ¸¦ WebView Client¿¡°Ô Á¦°øÇÏ°í ¿©±â¼ loadUrl À» »ç¿ëÇÏ¿© È£ÃâÇϰԵǸé WebView¿¡¼ ·ÎµåµÇ°ÔµÈ´Ù. return°ªÀ» true·Î ÇÏ¸é »õ·Î¿î UrlÀ» È£ÃâÇϱâ À§Çؼ ¿ÜºÎ ºê¶ó¿ìÀú¸¦ ´õÀÌ»ó ãÁö ¾Ê°Ô µÈ´Ù.
|
|
̵̧ : 343 |
̵̧
¸ñ·Ï
|
|