WebView 사용 예제 :: 소림사의 홍반장!

WebView 사용 예제

2012. 4. 18. 00:52 - 삘쏘굿

WebView

WebView는 웹브라우저 액티비티를 만들수 있도록 해준다.

 

STEP1. layout file을 다음과 같이 생성한다.


<?xml version="1.0" encoding="utf-8"?>
<WebView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

 

STEP2. 자 이제 WebView를 사용하는 Activity를 만들어 볼까? 우선 onCreate()에서 WebView를 건저와야지. 

 

webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.google.com");

 

STEP3. 그런다음 WebView가 실행되게 할라면 퍼미션이 있어야 하겠지?
            manifest.xml 파일에 다음과 같이 퍼미션을 설정해

 

<uses-permission android:name="android.permission.INTERNET" />

 

STEP4. 내가 만든 브라우저에서 앞으로, 뒤로, 확대, 축소 이런 기능이 가능하게 하려면 WebViewClient 객체를 구현해서
        만들면 OK

   

      private class HelloWebViewClient extends WebViewClient {

 @Override
 public boolean shouldOverrideUrlLoading(WebView view, String url) {
  // url 주소에 해당하는 웹페이지를 로딩
  view.loadUrl(url);
        return true;
 }
 
 @Override
 public void onLoadResource(WebView view, String url) {
  // 웹 페이지 리소스들을 로딩하면서 계속해서 호출된다.
  super.onLoadResource(view, url);
 }
 
 @Override
 public void onPageFinished(WebView view, String url) {
  // 페이지 로딩시 호출된다.

if (dialog.isShowing()) {
  dialog.cancel();
 }


  super.onPageFinished(view, url);
 }
 
 @Override
 public void onPageStarted(WebView view, String url, Bitmap favicon) {
  // 페이지 요청이 시작될 경우 호출된다.
if(dialog==null) {

    dialog = new ProgressDialog(activity);
 dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
 dialog.setTitle("Updating");
 dialog.setMessage(activity.getText(R.string.web_conn));
 dialog.setProgress(0);
 dialog.setMax(100);
 dialog.setButton("취소", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
   dialog.cancel();
  }
 });
 dialog.show();
}
 super.onPageStarted(view, url, favicon);


 }
 
 @Override
 public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
  // TODO Auto-generated method stub
  super.doUpdateVisitedHistory(view, url, isReload);
 }

 @Override
 public void onFormResubmission(WebView view, Message dontResend, Message resend) {
  // TODO Auto-generated method stub
  super.onFormResubmission(view, dontResend, resend);
 }


 @Override
 public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
  // TODO Auto-generated method stub
  super.onReceivedHttpAuthRequest(view, handler, host, realm);
 }

 @Override
 public void onScaleChanged(WebView view, float oldScale, float newScale) {
  // TODO Auto-generated method stub
  super.onScaleChanged(view, oldScale, newScale);
 }

 @Override
 public void onTooManyRedirects(WebView view, Message cancelMsg, Message continueMsg) {
  // TODO Auto-generated method stub
  super.onTooManyRedirects(view, cancelMsg, continueMsg);
 }

 @Override
 public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
  // TODO Auto-generated method stub
  super.onUnhandledKeyEvent(view, event);
 }

 @Override
 public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
  // 키를 오버로딩한것인데 주로 웹페이지를 뒤,앞 등으로 이동하게 한다.
  // 왼쪽키를 누르게 되면 뒤로, 오른쪽 키는 앞으로 가게 한다.
  /*int keyCode = event.getKeyCode();
  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;*/
  return super.shouldOverrideKeyEvent(view, event);
 }

 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  // 웹페이지 로딩중 에러가 발생했을때 처리 

 Toast.makeText(activity, activity.getText(R.string.web_error) + description, Toast.LENGTH_SHORT).show();
 if (dialog.isShowing()) {
  dialog.cancel();
 }


 }


 }

 

STEP5.  이렇게 만든 WebViewClient를 사용하려면 onCreate()에서 다음과 같이 코딩한다.

 webview.setWebViewClient(new HelloWebViewClient ());

 

 

STEP6.  Activity를 실행하면 다음과 같은 결과가 짜잔~~

 


다른 카테고리의 글 목록

Dev. 안드로이드/참고소스 카테고리의 포스트를 톺아봅니다