Android - 앱 화면에 웹브라우저 넣기

유의선·2023년 7월 17일
0

웹브라우저를 앱 안에 넣을 때는 웹뷰(WebView)를 사용하면 된다.
XML 레이아웃에선 <WebView> 태그로 정의한다.

웹뷰를 정의하여 사용할 때는 인터넷에 접속하게 되므로 항상 매니페이스에 인터넷 접속 권한이 등록되어 있어야 한다

<uses-permission android:name="android.permission.INTERNET" />

activity_main.xml 파일을 수정한다.
버튼과 입력상자, 그리고 웹뷰가 들어가도록 만들었다.


MainActivity.java에 코드를 작성했다.

public class MainActivity extends AppCompatActivity {
    EditText editText;
    WebView webView;

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

        editText = findViewById(R.id.editText);
        webView = findViewById(R.id.webView);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new ViewClient());

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webView.loadUrl(editText.getText().toString());
            }
        });
    }

    private class ViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            return true;
        }
    }
}

WebView 객체의 getSettings 메소드를 사용해 webSettings 메소드를 참조한다.

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

이 설정한 설정 정보 중에 setJavaScriptEnable을 true로 설정하여 자바스크립트가 동작할 수 있는 환경으로 하였다.

화면에 추가된 webView 객체에 웹페이지를 보여주기 위해서는 WebViewClient를 상속한 객체를 만들어 WebView에 설장해야 한다.

        webView.setWebViewClient(new ViewClient());

		...

    private class ViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            return true;
        }
    }

웹페이지를 로딩하여 화면에 보여주기 위해서는 loadUrl 메소드를 사용한다.

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webView.loadUrl(editText.getText().toString());
            }
        });

이 메소드를 사용하면 원격지의 웹페이지를 열겨나 로컬에 저장된 HTML 파일을 열 수 있다.


앱을 실행하려면 권한을 설정해야 하므로 AnroidManifest.xml 파일에 권한을 추가한다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.techtown.web">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:usesCleartextTraffic="true"

                 ...

<uses-permission android:name="android.permission.INTERNET" />로 INTERNET 권한을 추가하였다.
또한 <application> 태그 안에 usesClientTraffic 속성을 추가해 true로 설장하였다.


0개의 댓글