본문 바로가기

자바 웹 개발자가 될거야/JAVA

[Android] 안드로이드 웹뷰 구현하기

< 웹 뷰 >

 

① main.xml

 

- EditText로 사이트 주소 입력받음

- 이동 버튼과 이전 버튼 존재

- 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:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/et1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="이동"/>
        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="이전"/>

    </LinearLayout>

    <WebView
        android:id="@+id/wv1"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

 

 

② androidManifest.xml

 

- app 폴더 아래 manifests 폴더에 AndroidManifest.xml 을 열어서 인터넷을 허용해줘야함

- uses-permission 이용

- <application> 태그 안에 usesCleartextTraffic 추가

 

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

<application
	android:usesCleartextTraffic="true"
/>

 

- 테스트 실패하면 프로젝트를 완전히 삭제 후 다시 실행해보시길

 

 

③ .java

 

 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText et1 = findViewById(R.id.et1);
        Button btn1 = findViewById(R.id.btn1);
        Button btn2 = findViewById(R.id.btn2);
        WebView wv1 = findViewById(R.id.wv1);
        wv1.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                et1.setText(wv1.getUrl());
            }
        });
        wv1.loadUrl("https://m.daum.net");

 

- onPageStarted에서는 해당 사이트 주소를 EditText에 보여줌

 

- 웹뷰.loadUrl("사이트 주소");

  · 웹뷰의 시작페이지 주소 지정함

 

 

 

btn1.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View view) {
		wv1.loadUrl(et1.getText().toString());
	}
});

 

- EditText에 주소 입력 후 이동버튼(btn1) 누르면 해당 사이트로 이동

  · 웹뷰.loadUrl() 사용하되 getText() 사용함

 

 

- 크롬으로 넘어가지 않고 첫번째사진처럼 바로 보여줌

wv1.setWebViewClient(new WebViewClient(){});

 

 

- 이전 버튼(btn2) 누르면 이전 페이지로 돌아감

 

btn2.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View view) {
		wv1.goBack();
	}
});