명시적 인텐트 , 암시적 인텐트

김정혁·2024년 8월 11일

명시적 인텐트

  • 특정 컴포넌트(액티비티, 서비스 등)을 직접 지정하여 실행한다.
  • 주로 앱 내부의 컴포넌트를 실행할 때 사용한다.
  • 컴포넌트의 클래스 이름을 정확히 알고 있어야 한다.
// example
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

암시적 인텐트

  • 수행할 작업을 지정하지만, 특정 컴포넌트를 직접 명시하지 않습니다.
  • 안드로이드 시스템이 적절한 컴포넌트를 찾아서 실행합니다.
  • 다른 앱의 기능을 호출할 때 주로 사용됩니다.
  • 액션, 데이터, 카테고리 등을 지정하여 사용합니다.
// example
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을 잘못 명시하면 어떻게 되는가?

  1. 지정한 Action을 처리할 수 있는 앱이나 컴포넌트가 없는 경우 예외가 발생
  2. 의도하지 않은 앱이 실행될 수 있어서, 사용자 혼란
  3. 데이터가 올바르게 처리되지 않을 수 있음
  4. 민감한 데이터가 의도하지 않은 앱에 노출될 수 있음

차이

  • 명시적 intent는 직접 지정하므로, 더 명확하고 안전하다.
  • 암시적 intent는 유연성이 높고, 다른 앱의 기능을 쉽게활용할 수 있다.
profile
ai가 씁니다

0개의 댓글