명시적 인텐트
- 특정 컴포넌트(액티비티, 서비스 등)을 직접 지정하여 실행한다.
- 주로 앱 내부의 컴포넌트를 실행할 때 사용한다.
- 컴포넌트의 클래스 이름을 정확히 알고 있어야 한다.
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
암시적 인텐트
- 수행할 작업을 지정하지만, 특정 컴포넌트를 직접 명시하지 않습니다.
- 안드로이드 시스템이 적절한 컴포넌트를 찾아서 실행합니다.
- 다른 앱의 기능을 호출할 때 주로 사용됩니다.
- 액션, 데이터, 카테고리 등을 지정하여 사용합니다.
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com"))
startActivity(intent)
암시적 인텐트에 사용되는 Action의 종류
- Intent.ACTION_VIEW
- 데이터를 사용자에게 표시할 때 사용
- ACTION_SEND
- 데이터를 사용자게에 표시
- ACTION_DIAL
- 전화 다이얼을 사용할 때 사용
- ACTION_CALL
- 직접 전화를 걸 때 사용 (권한 필요)
- ACTION_SENDTO
- 특정 수신자에게 메시지를 보낼 때 사
- ACTION_EDIT
- 데이터를 편집할 때 사용
- ACTION_PICK
- 데이터 목록에서 항목을 선택할 때 사용
- ACTION_GET_CONTENT
- 사용자가 데이터를 선택하고 반환할 때 사용
- ACTION_SEARCH
- 검색을 수행할 때 사용
- ACTION_WEB_SEARCH
- 웹 검색을 수행할 때 사용
- ACTION_CAMERA_BUTTON
- 카메라 버튼을 눌렀을 때의 동작을 정의
- ACTION_MAIN
- 앱의 시작 액티비티를 지정할 때 사용
- ACTION_OPEN_DOCUMENT
- 문서를 열때 사용
- ACTION_CREATE_DOCUMENT
- 새 문서를 만들 때 사용
- ACTION_SETTINGS
- 시스템 설정을 열 때 사용
암시적 인텐트의 Action을 잘못 명시하면 어떻게 되는가?
- 지정한 Action을 처리할 수 있는 앱이나 컴포넌트가 없는 경우 예외가 발생
- 의도하지 않은 앱이 실행될 수 있어서, 사용자 혼란
- 데이터가 올바르게 처리되지 않을 수 있음
- 민감한 데이터가 의도하지 않은 앱에 노출될 수 있음
차이
- 명시적 intent는 직접 지정하므로, 더 명확하고 안전하다.
- 암시적 intent는 유연성이 높고, 다른 앱의 기능을 쉽게활용할 수 있다.