WebView
WebView는 Android 앱에서 웹 콘텐츠(인터넷의 정보)를 표시할 때 사용하는 앱입니다.
WebView는 Android 앱을 만들 때 Google 크롬과 같은 브라우저를 사용하지 않고도 웹 콘텐츠를 볼 수 있게 해주는 소프트웨어 부분입니다.
예를 들어, 스마트폰 게임 제작자가 앱의 게임에 대한 알림을 WebView에서 표시하도록 설정했다고 가정합니다.
그러면 사용자가 게임 앱에서 떠나지 않아도 '게임 알림'이라는 웹 콘텐츠를 볼 수 있습니다.
androidManifest.xml
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
상기의 코드를 추가해줘야 합니다.
이것은 WebView를 허가 한다는 말입니다. 인터넷을 사용해도 된다는 의미 입니다.
activity_web_view.xml
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
webView를 추가해주는 것으로 접속시 바로 이동이 가능하게 됩니다.
WebViewActivity.java
public class WebViewActivity extends AppCompatActivity {
private WebView webView;
private String url = "https://www.google.com/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
}
// 뒤로가기 누르면 원래 페이지로 돌아감
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
//현재 페이지의 url을 읽어오는 기능 자주 사용됨.
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
설정을 google.com으로 하게 되어 연결 시 google로 이동하게 됩니다.
그리고 뒤로가기 를 누르게 되면 원래 페이지로 돌아가기 위한 설정을 해줍니다.
getSettings()를 이용해서 javascript의 정보를 가져오게 하고
loadUrl(url); 을 사용해서 방금 정의한 google.com을 설정해줍니다.
그리고 크롭에서 동작하도록 setWebChromeClient()를 이용하고, 그 외의 것도 대응하기 위해
기본 setWebViewClient()도 설정해줍니다.
먼저 오버라이드 된 onKeyDown
keycode와 keyevent를 받아서 뒤로가기 버튼이 눌렀는지 확인합니다.
webViewClientClass
현재의 페이지의 url을 읽어오는 클래스입니다.
자주 사용되기 때문에 알아두면 좋을 것 같습니다.
'개발 > 안드로이드 어플' 카테고리의 다른 글
⑥안드로이드어플개발 - Logcat 디버깅하는 방법 log출력|debug (0) | 2022.11.29 |
---|---|
⑤안드로이드어플개발 - viewPager (0) | 2022.11.28 |
③안드로이드어플개발 - ImageView 와 Toast (Drawable과 mipmap) (0) | 2022.11.27 |
②안드로이드어플개발 - ListView 와 ArrayAdapter (0) | 2022.11.25 |
①안드로이드어플개발 - Intent 화면전환, findViewById (0) | 2022.11.25 |
댓글