Android

Scheme이란?

dev_SiWoo 2025. 11. 13. 17:48

What's 스킴(Scheme)? → URL의 “프로토콜 이름”

https://naver.com
  • https ← 이 부분이 스킴(scheme)
  • :// ← 스킴 구분자

URL이 “무슨 종류의 명령인지” 나타내는 식별자

🔵 다양한 스킴 예시

https://google.com  → 스킴: https
http://example.com → 스킴: http
file:///path        → 스킴: file
tel:01012345678     → 스킴: tel
mailto:test@test.com → 스킴: mailto
intent://something → 스킴: intent

 

 

❗ 스킴을 처리하지 않으면?

예시 1)
웹에서 “전화 걸기” 버튼 → 눌러도 아무 일도 안 일어남

 

예시 2)
카카오톡 로그인, 네이버 로그인 등 외부 앱 호출 → 실패함

 

예시 3)
앱 내부 사용자 정의 명령(app://...) → WebView가 잘못 열어서 오류 발생

 

 

🔥 Android에서 스킴 처리하는 대표 케이스

1) 전화 걸기

if (url.startsWith("tel:")) {
    val intent = Intent(Intent.ACTION_DIAL, Uri.parse(url))
    startActivity(intent)
    return true
}

 

2) 이메일 열기

if (url.startsWith("mailto:")) {
    val intent = Intent(Intent.ACTION_SENDTO, Uri.parse(url))
    startActivity(intent)
    return true
}

 

 

 

🔵 스킴은 앱 ↔ 웹 통신의 기본 기술이기도 함

웹에서 Android에게 명령 전달시

window.location.href = "app://closeWebview";

 

 

Android에서:

 

if (url.startsWith("app://closeWebview")) {
    finish() // 액티비티 종료
}