안드로이드 브릿지 인터페이스 JavaScriptInterface 완벽 가이드 – 앱과 웹 간 통신 방법 총정리


✨ 개요

앱에서 WebView를 사용할 때, 웹 페이지와 앱(Java/Kotlin 코드) 간의 데이터를 주고받아야 하는 상황이 자주 발생합니다. 이때 사용하는 것이 바로 Android의 @JavascriptInterface 브릿지 인터페이스입니다.

이번 포스팅에서는 JavaScriptInterface의 개념부터 활용 예시, 보안 팁, 주의사항까지 모두 정리해 드립니다.


1. JavaScriptInterface란?


2. 기본 사용 흐름


3. 사용 예제

코틀린 코드

class WebAppBridge(val context: Context) {

    @JavascriptInterface
    fun showToast(message: String) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
    }
}

val webView: WebView = findViewById(R.id.webView)
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(WebAppBridge(this), "AndroidBridge")
webView.loadUrl("file:///android_asset/sample.html")

HTML/JavaScript (웹)

<button onclick="AndroidBridge.showToast('Hello from Web!')">Click Me</button>

4. 양방향 통신 예시


5. 보안 이슈 및 주의사항

위험 요소 설명
@JavascriptInterface 노출 외부 사이트가 의도치 않게 앱 기능을 호출할 수 있음
파일 스킴(file://) Android 4.2 미만에서는 매우 위험 (권한 탈취 가능)
웹 URL 검증 필요 외부 URL에 대해 검증 없이 addJavascriptInterface 호출 금지

6. 자주 발생하는 문제와 해결법

문제 해결책
JS 함수 호출이 안 됨 webView.settings.javaScriptEnabled = true 확인
앱 메서드 호출 안 됨 @JavascriptInterface 빠졌는지 확인
JS에서 AndroidBridge undefined addJavascriptInterface()가 누락됐거나 load 전에 실행됨

7. 결론

핵심 요약
@JavascriptInterface는 웹 → 앱 통신을 가능하게 함
addJavascriptInterface()로 WebView에 객체를 등록해야 함
보안상 위험이 있을 수 있으므로 사용 시 반드시 주의해야 함
실무에서는 웹 로그인, 결제, 공유 기능 등에 자주 사용됨


Related Posts