Android Web View
by 담배맛구마Application 내부에서 웹페이지를 출력해준다.
To do List
1. Activity에 WebView추가하기.
2. Manifest에 Internet 접속가능하게 퍼미션 추가해주기
3. MianActivity 자바 코드에 WebView인스턴스 만들고 세팅하고 출력하기
1. Activity에 WebView추가하기.
Activity에서 Palette에서 Composite 폴더에보면 WebView가 있다. 적당한 크기로 추가해준다.
WebView를 추가하고 소스코드를보면 다음과 같이 추가된다.
2. Manifest에 Internet 접속가능하게 퍼미션 추가해주기
다음과 같은 퍼미션을 추가해주면 된다.
<uses-permission android:name="android.permission.INTERNET"/>
퍼미션을 추가하는 방법은 Manifest파일에서 그냥 코드를 수정하는 방법도있지만 퍼미션탭을 이용해서도 가능하다.
혹은 소스코드로 다음과 같이 추가해주면된다(블록처진부분만 추가한거)
3. MianActivity 자바 코드에 WebView인스턴스 만들고 세팅하고 출력하기
그냥 간단하게 보기위해 OnCreate에다가 만들었다.
WebView wv = (WebView)findViewById(R.id.webView1);
//WebView안에서 다른 페이지(링크)로 이동가능(이거안하면 기본브라우저로실행됨)
wv.setWebViewClient(new WebViewClient());
//WebView Setting을 위한 인스턴스 생성
WebSettings set = wv.getSettings();
set.setJavaScriptEnabled(true);//Enable JavaScript
set.setBuiltInZoomControls(true);//Enable Zoom
wv.loadUrl("http://www.naver.com");
일단 WebView라는 인스턴트를 만들었다. 아까 Activity에 WebView추가할때 id를 webView1로 했기에 R.java에서 webView1라는 이름의 id를 통해 View 인스턴트를 가져온다.
setWebViewClient(new WebViewClient()); 소스는 WebView안에서 다른페이지(링크)로 이동이 가능하게하는 구문이다.
이걸 안하면 페이지이동시에 기본 브라우저가 따로 실행된다.
그리고 WebSettings라는 클래스의 인스턴스를 하나 만드는데 이 인스턴스로 웹 페이지의 세팅을 해줄수있다.
setJavaScripEnabled(ture)를 통해 JavaScript를 허용해주고
setBuiltInZoomControls(ture)를 통해 Zoom이 가능하게 허용해줄수있다.
마지막으로 WebView인스턴트의 loadUrl(가고싶은 URL String)으로 띄어줄 URL을 설정해주면된다.
결과는 아래와 같다.
※ 내가 만든 html 을 띄어주고 싶다?
assets 폴더에 html 문서를 추가해주면된다.
assets폴더와 res폴더의 차이점은
res폴더에 파일을 넣으면 R.java에 id로써 등록이 되지만 assets폴더에는 등록이안된다는 차이점이있다.
아래는 assets폴더안에 www폴더 안에 index.html을 추가했다.
그런다음 자바 코드에 loadURL 메소드를 수정해준다.
assets 폴더에 접근하는 방법은
file:///android_asset/... 이런식으로 접근하면된다.
실행화면은 생략하겠다.
※ 한글이 출력이 안됨??
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
이걸 넣어주자.
※ index.html에서 <a> </a>사용해서 웹페이지를 띄우려고하는데 안된다?
<a href="www.naver.com">네이버</a>
이렇게해버리면 index.html(지금 보고있는 문서)가 저장된 경로에서 www.naver.com.html을 찾게된다.
즉, 예제에서는 file:///android_asset/www/www.naver.com.html 을 찾을 수 없다고 에러가 뜬다.
<a href="http://www.naver.com">네이버</a>
이렇게 Protocol 을 명시해줘야 된다. 이렇게해도 안되면 퍼미션 설정을 확인해보자
블로그의 정보
정윤상이다.
담배맛구마