안드로이드에 내장된 브라우저는 구조가 굉장히 복잡하기 때문에 android.webkit이라는 독립적인  담겨있다. 그리고 WebView라는 위젯을 사용해 간단하게 화면에 HTML을 표시하는 정도로  수 있고, 아니면 들어 있는 기능을 총동원해 강력한 브라우징 기능을  수도 있다.

 

1. 단순한 브라우저

   간단한 기능만 사용한다면 WebView 역시 안드로이드의 다른  별반 다를게 없다. 그저 레이아웃에 추가하고, 자바 코드에서 URL만 지정해주면  URL의 내용을 바로 표시해준다.

 

       layout/main.xml의 예제

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

        자바코드 예제

import android.app.Activity;
import android.os.Bundle;
import 

public class BrowserDemo1 extends Activity {
      WebView  
 
      @Override
      public void onCreate(Bundle  {
           super.onCreate(icicle);
          setContentView(R.layout.main);
           browser=(WebView)findViewById(R.id.webkit);
  
           browser.loadUrl("http://commonsware.com");
    }
}

           사용할 수 있는 권한을 확보하도록 AndroidMainifest.xml 파일을 수정해야 한다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.commonsware.android.webkit">
 <uses-permission android:name="android.permission.INTERNET" />
 <application>
 <activity android:name=".BrowserDemo1" android:label="BrowserDemo1">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>
</manifest>

         - WebView 위젯에서는 자바스크립트가 기본적으로  있다. 자바스크립트를 동작하도록 활성화하려면 WebView 인스턴스의 getSettings().setJavaScriptEnabled(true) 메소드를 호출하면 된다.

 

2. 원하는 내용 표시

    WebView 안에 원하는 내용을 표시하는 방법 두가지

   - loadUrl() 메소드를 사용해 WebView에 URL을 넘겨주고 해당하는 페이지의  가져와 표시하도록 하는 방법

    - loadData() 메소드에는  HTML을 직접 전달한다.

 

    WebView 위젯을  좋은 경우

    - 애플리케이션 패키지와 함께 설치된  화면에 표시하고자 할 때

    - 다른 작업을  결과로 받아온 HTML 형태의 문자열을 표시할 때

     ex) Atom 피트에서 뽑아낸 본문 내용을 화면에 표시할 때

   - 안드로이드에 내장된 위젯 대신 HTML 만으로 애플리케이션 화면을  경우

 

    loadData() 메소드 설명

   - loadData() 메소드의 가장 간단한 형태는 본문내용, MIME 타입,  인코딩 등의 내용을 모두 문자열로 지정한다.(MIME 타입은 text/html이며, 인코딩은 UTF-8을 

 

  browser.loadData("<html><body>Hello, world!</body></html>",
      "text/html", "UTF-8");

3. 브라우저 내비게이션

   WebView에는 기본적으로 브라우저 내비게이션 툴바가 포함돼 있지  앞으로, 뒤로 등의 기능을 갖고 있는 내비게이션 툴바를 별로 사용할  없거나 화면을 최대한 활용해야 하는 경우에는 툴바가 없는 편이 낫다.  브라우저 내비게이션 기능을 사용자에게 제공하려면 내비게이션 기능과 관련된 인터페이스를 개바자가  만들어야 하는 단점도 있다.

 

   WebView 위젯에는  같은 다양한 브라우져 내비게이션 기능이 내장

   - reload() 메소드 : 현재 표시하는 페이지 내용을 새로 고침

   -  메소드 : 브라우저 URL 기록 가운데 바로 이전 주소로 되돌아간다.

   - goForward() 메소드 : 브라우저 URL 기록 가운데 바로  주소로 나아간다.

   - goBackOrForward() 메소드 : 브라우저의 URL  앞뒤 원하는 방향으로 이동할 수 있다. 넘겨주는 값이 0보다 작으면  숫자만큼 뒤로 돌아가고, 0보다 크면 해당 숫자만큼 앞으로 나아간다.

  - canGoBackOrForward() 메소드 : 넘겨주는 숫자값만큼 브라우저 URL 기록을 따라  수 있는지 확인한다.

   - clearCache() 메소드 : 브라우저가  갖고 있던 파일을 제거한다.

   - clearHistory() 메소드는  URL 기록을 제거한다.

 

4. WebViewClient

   WebView 위젯을 사용해 애플리케이션 내부 데이터를 표현하려면,  표시된 HTML 링크를 플릭하는 등의 상황에서 제어권을 넘겨받아야 할 필요가 

    - 특정 작업에 대한 제어권을 확보하려면  인스턴스를 하나 생성해 WebView 위젯의 setWebViewClient() 메소드에 넘겨줘야 한다.

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 java.util.Date;

public class BrowserDemo3 extends Activity {
     WebView browser;
 
      @Override
      public  onCreate(Bundle icicle) {
            super.onCreate(icicle);
           setContentView(R.layout.main);
           browser=(WebView)findViewById(R.id.webkit);
            browser.setWebViewClient(new Callback());
 
            loadTime();
    }
 

    // 현재 시각을  HTML 형태로 생성해 WebView 위젯에 적용
    void  {
            String page="<html><body><a href=\"clock\">"
                                  +new Date().toString()
                                  +"</a></body></html>";
      
           browser.loadDataWithBaseURL("x-data://base", page,
                                                      "text/html", "UTF-8", null);
     }

 

    private class Callback extends WebViewClient {

        // 링크 클릭 이벤트 처리

         public boolean shouldOverrideUrlLoading(WebView view, String url)  
                loadTime();
   
               return(true);
        }
    }
}

5. 설정과 

    데스트탑에서 사용하던 웹브라우저를 보면 각종  옵션이 가득하다. 수많은 설정이나 옵션과 툴바 컨트롤 사이에서 기본 글꼴을  자바스크립트의 동작 상태를 지정하는 등 다양한 기능에 대해 설정값을 지정할  있다.

 

    WebSetting 클래스의 설정 메소드

     - setDefaultFontSize() 메소드 : setTextSize() 메소드를 사용해 기본  크기를 지정할 수 있다.

     - setJavaScriptEnabled() 메소드  자바스크립트를 켜거나 끌 수 있다.

     - setUserAgent()  : 0값을 넘겨주면 WebView에서 대상 웹사이트에 스스로가 휴대폰용 브라우저라는 사실을  통해 알려준다.


출처 : http://nopd.textcube.com/?indexTimestamp=1264487399&c=5

'안드로이드' 카테고리의 다른 글

디바이스의 고유 정보값 얻어오기  (0) 2011.01.27
타이틀 바 꾸미기  (0) 2011.01.27
안드로이드 2.0 Service API 변화  (0) 2011.01.27
Handler  (0) 2011.01.27
hardware keyboard의 존재 여부 및 상태 확인  (0) 2011.01.27

+ Recent posts