Android WebView 테스트 샘플 앱 개발 - 2

2022. 10. 22. 15:25·Android

이전시간에는 Android WebView를 통해 당근마켓 홈페이지를 표시하는 기능을 개발했습니다.

 

그러나 WebView 또다른 url로 이동하게 될 경우 WebView 내부가 아닌, 외부 브라우저를 통해 앱이 페이지가 표시되는 이슈가 있었습니다. 이를 해결해봅니다.

 

Android Developer 페이지의 WebView 문서에서 이 문제를 간단하게 해결할 수 있는 방법을 제시합니다.

 

사용자가 WebView에서 웹페이지의 링크를 클릭하면 URL을 처리하는 앱이 Android에서 실행되는 것이 기본 동작입니다. 대개 기본 웹브라우저에 도착 URL이 열리고 로드됩니다.

 

하지만 링크가 WebView내에서 열리도록 WebView의 이 동작을 재정의할 수 있습니다. 그러면 WebView에 의해 유지 관리되는 웹페이지 방문 기록을 통해 사용자가 앞뒤로 탐색할 수 있습니다.

 

webView 객체에 아래의 코드를 추가하여 사용자가 클릭한 링크가 WebView 내에서 로드되게 할 수 있습니다.

webView.webViewClient = WebViewClient() // 사용자가 클릭한 모든 링크가 WebView에 로드되게 함.

또한, 문서 바로아래에 뒤로가기 버튼을 클릭했을 때 WebView에서 이전 페이지를 표시하는 기능도 제공합니다.

MainActivity내에 아래의 코드를 추가해줍니다.

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        // Check if the key event was the Back button and if there's history
        if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
            webView.goBack()
            return true
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event)
    }

이로서 간단하게 WebView 내에서 페이지를 이동하고, 뒤로가기 버튼 클릭시 WebView 내에서 뒤로가기로 동작하는 기능을 추가 했습니다.

 

reference :

https://developer.android.com/guide/webapps/webview?hl=ko#HandlingNavigation

 

WebView에서 웹 앱 빌드  |  Android 개발자  |  Android Developers

WebView에서 웹 앱 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경

developer.android.com

 

'Android' 카테고리의 다른 글

android studio에서 실행한 앱이 설치되지 않을 때  (0) 2022.11.06
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements ArtOnApplication_GeneratedInjector,  (0) 2022.11.05
Android WebView 샘플 앱 개발 - 1  (0) 2022.10.22
Android에서 Firebase Cloud Messaging 테스트 앱 개발 - 1  (0) 2022.10.19
BroadcastReceiver  (0) 2022.10.06
'Android' 카테고리의 다른 글
  • android studio에서 실행한 앱이 설치되지 않을 때
  • error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements ArtOnApplication_GeneratedInjector,
  • Android WebView 샘플 앱 개발 - 1
  • Android에서 Firebase Cloud Messaging 테스트 앱 개발 - 1
HWBB
HWBB
흥미주도개발자
  • HWBB
    코딩공부방
    HWBB
  • 전체
    오늘
    어제
    • 분류 전체보기 (164)
      • 알고리즘 (61)
      • Android (27)
      • Kotlin (0)
      • Java (2)
      • Design Pattern (2)
      • React Native (1)
      • Python (0)
      • TIL (21)
      • Unity (0)
      • React (2)
      • AWS (0)
      • Git (11)
      • MFC (1)
      • Spring (4)
      • Computer Science (4)
      • Vue (4)
      • Infra (6)
      • 박현우 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 승윤이
  • 공지사항

  • 인기 글

  • 태그

    programmers
    Android
    algorithm
    Kotlin
    코딩테스트
    백준
    깃허브
    자바
    알고리즘
    github
    Java
    android studio
    baekjoon
    코틀린
    coding
    GIT
    AWS
    안드로이드
    안드로이드 스튜디오
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
HWBB
Android WebView 테스트 샘플 앱 개발 - 2
상단으로

티스토리툴바