본문 바로가기

android

[j android] WebView 추가하기

728x90
반응형

 웹브라우저를 앱 안에 넣고 싶을 때는 웹뷰를 사용한다. 

 

1) 먼저 인터넷에 접속해야 되기 때문에 매니페스트에 인터넷 권한을 넣어준다.

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

 

2) xml에 주소입력/버튼과 webview를 추가해 준다.

 

<?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=".MainActivity">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/address"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/go"
            android:text="이동"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>

 

3) mainactivity.class 코드 작성

 

 - webView 세팅하기

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

* setJavaScriptEnabled(true) : 자바스크립트가 동작할 수 있다.

 

 - 화면에 추가된 webView에 웹사이트를 보여주기 위해 wevViewClient를 상속하여 webView에 설정해준다.

 webView.setWebViewClient(new ViewClient());
 
  private class ViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
            view.loadUrl(url);
            return true;
        }
    }

 

 - 웹페이지를 로딩하여 화면에 보여주기위해서는 loadUrl()를 사용

 webView.loadUrl(address.getText().toString());

 

**goForward()/ goBack() 메서드를 이용하면 앞 뒤 페이지 이동가능

 

 

 - 다음은 mainactivity.class의 전체 소스이다.

public class MainActivity extends AppCompatActivity {
    EditText address;
    Button go;
    WebView webView;

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

        address = (EditText) findViewById(R.id.address);
        go = (Button) findViewById(R.id.go);
        webView = (WebView) findViewById(R.id.webview);

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

        webView.setWebViewClient(new ViewClient());

        go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webView.loadUrl(address.getText().toString());
            }
        });
    }

    private class ViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
            view.loadUrl(url);
            return true;
        }
    }

}

 

 

 

4) manifest 권한 설정

 - 웹뷰 안에 웹사이트가 표시되게 해주는 것.

 android:usesCleartextTraffic="true"

 

 

**실행 결과

 

webview 실행결과화면

 

728x90
반응형