Development/Android

20. 웹뷰(WebView)

궁선이 2018. 5. 5. 01:45

웹뷰는 
다음 화면과 같이 앱 내에서 웹페이지를 띄워주는 방식입니다.
요즘같은 하이브리드 앱 시대에 많이 사용되는 컴포넌트 이며
구현도 간단해 널리 이용됩니다.


구현 순서는 다음과 같습니다.
1) Manifest에 접속권한 등록
2) 레이아웃에 웹뷰 추가
3) Activity에 코드작성

1. Manifest에 INTERNET권한 등록

다음 권한을 AndroidManifest에 추가합니다.

<uses-permission android:name="android.permission.INTERNET" />
2. 레이아웃에 웹뷰 추가

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.mskir.myapplication.MainActivity" android:focusable="true" android:focusableInTouchMode="true" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
3. 코드로 구현

webView = (WebView)findViewById(R.id.webview); 
WebSettings webSettings = webView.getSettings(); 
// 자바스크립트 사용하기
webSettings.setJavaScriptEnabled(true); 
// WebView 내장 Zoom 사용 
webSettings.setBuiltInZoomControls(true); 
// 확대,축소 기능을 사용할 수 있도록 설정
webSettings.setSupportZoom(true);  
캐쉬 사용 방법을 정의(default : LOAD_DEFAULT) webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

webView = (WebView)findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); //webView.addJavascriptInterface(new JavaScriptMethods(),"myApp"); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); //webSettings.setSupportZoom(true);

WebViewClient는 웹뷰가 url을 로드하기 위해서 구현하여야 한다.

webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return super.shouldOverrideUrlLoading(view, request); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); et.setText(url); } });

ChromeClient는 Javascript Alert, favicon, 제목과 진행상황 처리하고자 할 때 구현 

webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.confirm(); return super.onJsAlert(view, url, message, result); } }); }

WebView 실행
반드시 완전한 형태의 Url이 들어가야 한다.

webView.loadUrl("https://www.naver.com");