Android

webView 사용

토마토오이 2019. 9. 20. 22:20

 

1. WebViewClient :

webView 사용해 html 링크 클릭, 링크 내용/예시/에러 등 랜더링 할 때 호출 

(특정작업 제어권 확보 시 WebViewClient 함수를 따로 호출해야함)

 

2. WebChromeClient :

경고표시,윈도우 닫기 등 웹 브라우저 이벤트 구하기 위한 클래스,

웹 페이지 자체가 아니라 웹 페이지를 담은 틀, 크롬 브라우저 개념으로 특화됨.

 

 

* WebView 속성

 

setJavaScriptCanOpenWindowsAutomatically : 웹 팝업창 띄울 때 필요 (window.open() 정상 동작을 위해서 필요)

setUseWideViewPort  : 웹뷰 wide viewport 사용 속성 (html 컨텐츠 웹뷰에 맞게 나타나도록 함)

setSupportZoom  : 확대 축소 가능 여부 속성

setCacheMode : 웹뷰 캐시 모드 설정

  > LOAD_CACHE_ELSE_NETWORK  : 캐시 기간만료되면 네트워크 로드

  > LOAD_CACHE_ONLY : 네트워크 사요안하고 캐시 불러옴

  > LOAD_DEFAULT : 기본 모드, 캐시 사용하고 기간 만료되면 네트워크로 로드.

  > LOAD_NORMAL : 기본모드 캐시 사용

  > LOAD_NO_CACHE : 캐시모드 사용안하고 네트워크 로드

setDomStorageEnabled : 로컬 스토리지 사용여부 설정

setAppCacheEnabled : 앱 내부 캐시 사용여부

setAllowFileAccess  : 웹뷰 파일 엑세스 활성화 여부

setUserAgentString : 웹에서 해당 속성으로 띄운 웹뷰인지 구분

setJavaScriptEnabled : javascript 허용

setLoadslmagesAutomatically : 이미지 리소스를 자동으로 로드

setLoadWithOverviewMode : 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조절

 

참고 :  https://superwony.tistory.com/17

 

 

 


----------------------------------------

 

사전작업 

 

1. AndroidManifest.xml

 

</application> 

하단에 추가

 

<uses-permission android:name="android.permission.INTERNET" /> <!-- internet 접근 퍼미션 -->

 

 

2. activity_main.xml

 

<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/testWebView" />

 

웹뷰 추가

 

3. MainActivity.java

 

 

private WebView webview; //webview 변수 세팅 (onCreate 이외 함수에서도 사용할 예정으로 별도 선언)

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

webview = (WebView)findViewById(R.id.testWebView); //웹뷰 id 가져오기

WebSettings webSet = webview.getSettings(); //webView 세팅
webSet.setJavaScriptEnabled(true); // javascript 허용
webSet.setLoadWithOverviewMode(true); //컨텐츠가 웹뷰보다 클 경우 스크린 크기게 맞게 조절

webview.setWebViewClient(new WebViewClient()); //webView 타입을 WebViewClient로 설정
webview.loadUrl("로드할 URL!!!!");

}

 

 

예제 1)  MainActivity 에서 URL 연결하기

 

webview.loadUrl("https://choisblog.tistory.com/");

 

 

 

예제 2) MainActivity 에서 내부 html 연결하기


안드로이드스튜디오 프로젝트 내부에서 파일 없는 경우 생성 필요

 

src > main 에서 assets 파일과 www파일 추가

 

webview.loadUrl("file:///android_asset/www/test.html");

> 내부 assets파일 접근은 android_asset 파일