Android
[Android] WebView
Jintiago
2022. 3. 12. 22:07
실무에서도 굉장히 많이 쓰이니 반드시 알아두어야 한다!
앱을 실행하면 미리 코드에 입력한 url로 연결된다.
activity_main.xml
<?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"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
MainActivity.java
package com.example.webview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String url = "https://www.youtube.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView); // xml에서 id 불러오기
webView.getSettings().setJavaScriptEnabled(true); // javascript 허용
webView.loadUrl(url); // 특정 url을 틀어라
webView.setWebChromeClient(new WebChromeClient()); // Chrome 에서 원활히 돌아가도록 세팅
webView.setWebViewClient(new WebViewClientClass()); // 일반적 웹뷰 클라이언트
// ㄴ 이건 에러 뜸. inner class로 추가하자.
}
// 뒤로가기 눌렀을 때 웹뷰 정상적으로 종료되도록 세팅
// ctrl + o 에서 검색
// onKeyDown : 안드로이드 기기의 키 입력에 대해 특정 동작 하도록 지정
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (((keyCode) == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
// 뒤로가기 버튼 눌렀고, webview에서 뒤로 갈 수 있는 상황이면 뒤로 가라.
}
return super.onKeyDown(keyCode, event);
}
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
// shouldOverrideUrlLoading : 현재 페이지의 url 읽어오는 메소드
}
}
}
앱 빌드 및 실행 전, 인터넷 권한 설정은 꼭 해줘야 한다.