← 글 목록

notes

Android - Intent

명시적·암시적 Intent, extras, 결과 콜백과 딥링크 연결 메모.

화면 이동·공유·딥링크가 전부 Intent로 이어진다는 걸 알고 나서야 Manifest의 intent-filter가 읽히기 시작했다.

명시적 vs 암시적

// 명시: 같은 앱 안 클래스 지정
startActivity(Intent(this, DetailActivity::class.java).putExtra("id", id))

// 암시: 시스템이 핸들러 찾음
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://example.com")))

extras

val id = intent.getStringExtra("id")

Activity 재생성 시에도 Intent는 남는다. 상태 복원은 ViewModel / savedInstanceState와 역할을 나누자.

결과 받기

예전 startActivityForResult → 지금은 ActivityResultLauncher.

val launcher = registerForActivityResult(StartActivityForResult()) { result ->
    if (result.resultCode == RESULT_OK) { /* ... */ }
}

딥링크

Manifest intent-filter에 https + host 적고, App Links 검증(assetlinks.json)까지 가면 브라우저 거치지 않고 바로 앱으로 들어온다.