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)까지 가면 브라우저 거치지 않고 바로 앱으로 들어온다.