웹뷰를 사용해서 웹페이지를 사용(Building web apps in WebView)

앱에서 웹페이지를 링크해서 사용하는것이라 생각하면 됨

 - 와이파이 접속이 안된 상태에서는 데이터 사용 문제가 발생할 수 있음

 

# 웹뷰를 레이아웃에 추가함(Adding a WebView in the activity layout)

activity_main.xml

 

<WebView

        android:id="@+id/webview"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />

 

 

# 웹뷰를 onCreate에 추가(Adding a WebView in onCreate())

MainActivity.java

 

private WebView webView;

...

webView = (WebView)findViewById(R.id.webview);

webView.loadUrl(url);

 

 

# 인터넷 연결(Access to the Internet)

AndroidManifest.xml

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myweb.myapp">

        <!--인터넷 연결(Access to the Internet)-->

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

        ...

</manifest>

 

 

# 웹뷰에서 자바스크립트 사용하기(Using JavaScript in WebView)

MainActivity.java

 

private WebView webView;

...

webView.getSettings().setJavaScriptEnabled(true);

 

or

 

private WebSettings webSettings;

...

webSettings = webView.getSettings();

webSettings.setJavaScriptEnabled(true);

 

 

# 페이지 탐색 처리(Handling page navigation)

MainActivity.java

 

@Override
protected void onCreate(Bundle savedInstanceState) {

        ...

        webView.setWebChromeClient(new WebChromeClient()); // For Chrome

        webView.setWebViewClient(new MyWebViewClient());

}

 

private class MyWebViewClient extends WebViewClient {

        @Override

        public boolean shouldOverrideUrlLoading(WebView view, String url) {

                // Case 1

                if ("www.myweb.com".equals(Uri.parse(url).getHost())) {
                // This is my website, so do not override; let my WebView load the page
                    return false;
                }
                // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);

 

                // Case 2

                //view.loadUrl(url);

 

                return true;

        }

}

 

 

# 웹페이지 기록 탐색(Navigating web page history)

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

                webView.goBack();

                return true;

        }

        return super.onKeyDown(keyCode, event);

}

 

 

출처>

안드로이드 개발자 사이트

https://developer.android.com/guide/webapps/webview

 

 

728x90

+ Recent posts