Android WebView 뒤로가기 종료 및 외부 링크(Intent) 분기 처리 방법
Android WebView 뒤로가기 종료 및 외부 링크(Intent) 분기 처리 방법 하이브리드 앱을 개발하고 운영하다 보면 웹뷰(WebView) 안에서 뒤로 가기 처리나 외부 링크 분기 때문에 골치 아픈 일이 종종 생깁니다. 대충 퉁쳐서 처리하면 웹뷰에 방문 기록이 남아있는데도 앱이 픽 꺼져버리거나, 지도나 결제 창 같은 외부 링크가 웹뷰 안에서 깨진 채로 로딩되는 현상이 발생합니다. 심지어 검증되지 않은 도메인이 웹뷰 내에서 열려 보안 문제가 생기기도 하죠. 자꾸 헷갈리는 부분이라, 저의 경우 아예 기준을 명확히 잡고 베이스 코드로 만들어 두고 사용합니다. 나중에 다시 보려고 깔끔하게 정리해 둡니다. 1. 처리 기준 명확히 나누기 웹뷰 URL 처리는 무조건 아래 4가지 유형으로 딱 부러지게 나눠서 라우팅 정책을 잡아야 나중에 로그인이나 결제, 지도 기능이 추가되어도 꼬이지 않습니다. 구분 처리 위치 예시 URL / 스킴 판단 및 처리 기준 내부 도메인 WebView 내부 https://www.example.com/page 우리 서비스 정상 화면인지 확인 후 그대로 이동 외부 웹 링크 외부 브라우저 https://external.example 서비스 밖 링크거나 새 창 성격이면 크롬 등으로 토스 앱 스킴 외부 앱 / 마켓 market:// , tel: , mailto: Android Intent 처리 가능 여부 확인 후 실행 차단 대상 로딩 차단 알 수 없는 스킴 보안 정책상 허용하지 않고 예외 처리 2. 핵심 구현 코드 (Java) 민감한 운영 도메인은 제외하고, 실무에서 바로 뼈대로 잡고 쓸 수 있는 실제 구현 코드입니다. 최신 Android 트렌드에 맞춰 onBackPressed() 대신 OnBackPressedDispatcher 를 사용했습니다. Java public class MainActivity extends AppCompatActivity { // 운영하시는 서비스 도메인을 입력하세요 private static ...