webView 사용
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 연결하기
안드로이드스튜디오 프로젝트 내부에서 파일 없는 경우 생성 필요
webview.loadUrl("file:///android_asset/www/test.html");
> 내부 assets파일 접근은 android_asset 파일