[android] 인텐트

이아름·2022년 10월 6일
0

안드로이드

목록 보기
5/13
post-thumbnail

What is Intent?

  • 안드로이드 컴포넌트 4개
    -> Activity, Service, Broadcast Recevier, Content Provider

  • Intent는 컴포넌트 간 정보를 전달하는 역할을 한다.

  • Intent에는 명시적Intent암시적Intent가 있다.

명시적 Intent

  • 실행하고자 하는 컴포넌트 이름이 명확할 때 사용
val intent = Intent(this, NextActivity::class.java)
startActivity(intent)

암시적 Intent

  • 액션과 데이터는 명확하나 호출할 컴포넌트가 달라도 될 경우 사용
  • 의도만 담고 컴포넌트를 실행할 수 있음
startActivity(Intent(Intent.ACTION_CALL,uri))

-> chooser를 통해 컴포넌트를 선택할 수 있음

Intent의 구성요소

  • Action(액션) : 수행할 액션 이름 ex) ACTION_DIAL
  • Data(데이터) : 수행할 데이터의 URI ex) URI(tel:)
  • Category(카테고리) : 수행할 액션에 대한 추가적인 정보
  • Type(타입) : 수행할 인텐트 데이터의 명시적인 타입 ex) (video/mpeg)
  • Component name(컴포넌트 이름) : 대상 컴포넌트의 완전한 클래스 이름
  • Extras(추가 정보) : 인텐트를 다루는 컴포넌트에 추가적으로 전달할 한 쌍의 키/값

-> 암시적 intent의 판단 조건은 action, data, category이다.
-> 명시적 intent를 할 때는 component name을 사용한다.

  • Intent의 Action에는
    -> ACTION_MAIN, ACTION_VIEW, ACTION_DEFAULT, ACTION_EDIT, ACTION_DELETE, ACTION_DIAL, ACTION_CALL, ACTION_SEARCH...
    => ACTION_CALL은 바로 전화를 건다. - Permission이 필요하다.

  • Intent의 브로드캐스트 액션 : 브로드캐스트 리시버가 받을 수 있는 Action
    -> registerReceiver(BroadcastReceiver, IntentFilter) 메소드의 intentFilter에 정의하거나 AndroidManifest.xml의 태그에 정의할 수 있음
    ex) ACTION_TIME_TICK, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED, ACTION_BOOT_COMPLETED...

Intent Filter

  • 특정 Intent를 받을지 말지를 정함 -> 컴포넌트의 특징이 정해짐
  • intent 필터에 android.intent.action.MAIN : MainActivity
  • android.intent.category.LAUNCHER로 선언하면 : 진입점이 되는 Activity
profile
반갑습니다

0개의 댓글