인텐트는 일종의 메시지 객체로 안드로이드의 네 가지 기본 컴포넌트인 Activity, Service, ContentProvider, BroadcastReceiver 사이에서 통신을 담당한다.
startActivity를 통해 액티비티를 시작하거나, startService를 통해 서비스를 시작하거나, sendBroadcast()를 통해 다른 앱들에게 브로드캐스트를 전달하는 데 쓰인다.
명시적 인텐트(Explicit Intent)
시작할 구성요소를 명시적으로 지정한다.
val intent = Intent(this, PostActivity::class.java)
startActivity(intent)
암시적 인텐트(Implicit Intent)
구성 요소의 이름을 명시하지 않지만, 수행할 일반적인 작업을 선언하여 또다른 앱의 구성요소가 이를 처리할 수 있도록 한다.
val location = Uri.parse("geo:37.422219,-122.08364")
val intent = Intent(Intent.ACTION_VIEW, location)
startActivity(intent)
intent-filter는 AndroidManifest.xml에 정의되며, 이를 통해 앱의 특정 컴포넌트를 호출할 수 있다. 예를 들어, 본인의 앱이 수신할 수 있는 암시적 인텐트가 어느 것인지 알리려면, 각 앱의 구성 요소에 대한 하나 이상의 인텐트 필터를 메니페스트 파일에 선언해야 한다.
intent-filter의 구성요소
<activity android:name="MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>