ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] WebView
    Android 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 읽어오는 메소드
            }
        }
    }

    앱 빌드 및 실행 전, 인터넷 권한 설정은 꼭 해줘야 한다.

     

    너튜브 URL로 연결된 모습. 뒤로가기 누르면 닫힌다.

Designed by Tistory.