Intent Filter ?
앱의 manifest 파일에 정의 되어 있는 태그의 집합으로 컴포넌트가 수신하고자 하는 인텐트 유형을 표현한다.
인텐트 필터는 조건을 만족하는지 확인하고, 필터링을 하여 요청할 컴포넌트를 찾을 수 있다. 만약에 조건을 만족하는 컴포넌트가 1개 이상인 경우에는 사용자가 선택할 수 있다.
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Intent 객체에 담기는 정보(태그)
1. ComponentName
컴포넌트 이름은 선택사항 이지만, 인텐트를 명시적으로 만드는 중요한 정보이다. 즉, 이 인텐트는 컴포넌트 이름으로 정의된 앱 컴포넌트 요소에만 전달되어야 한다.
컴포넌트 이름이 없으면 인텐트는 암시적이며, 인텐트를 수신해야 하는 컴포넌트는 다른 인텐트 정보를 기반으로 시스템에서 결정해야 한다.
앱에서 특정한 컴포넌트를 시작해야 하는 경우에는 컴포넌트 이름을 지정해야 한다.
★ 참고 : Service를 시작할 때는 항상 컴포넌트 이름을 지정해야 한다. 그렇지 않으면 인텐트에 어느 Service가 응답할 지 확신할 수 없고, 사용자도 어느 Service가 시작되는지 볼 수 없게 된다.
해당 필드는 대상 컴포넌트의 정규화 된 클래스 이름(앱의 패키지 이름 포함)을 사용하여 지정할 수 있다.(예: com.example.ExampleActivity)
컴포넌트 이름을 설정하려면 setCompont(), setClass(), setClassName() 또는 Intent를 생성자로 사용한다.
2. Action, <action>
수행 할 일반적인 action을 지정하는 문자열.
Broadcast Intent의 경우 이미 실행되어 보고되고 있는 action이다. 이 action은 대체로 나머지 인텐트의 구조를 결정한다. 특히, 데이터와 엑스트라에 포함되는 정보가 결정된다.
다음은 Activity를 시작하는 사용되는 보편적인 action이다.
- Action_VIEW
이 action은 activity가 사용자에게 표시할 수 있는 어떤 정보를 가지고 있을 때 startActivity()가 있는 인텐트에서 사용 한다. 예를 들어 갤러리 앱에서 볼 사진이나 지도 앱에서 볼 주소 등이 이에 해당된다.
- ACTION_SEND
공유 인텐트라고도 하며, 사용자가 다른 앱(예: 이메일 또는 소셜 앱)을 통해 공유할 수 있는 데이터가 있을 때 startActivity()가 있는 인텐트에서 사용해야 한다.
인텐트에 대한 action을 지정하려면 setAction() 또는 Intent 생성자를 사용하면 된다.
action을 직접 정의하는 경우, 앱의 패키지 이름을 접두어로 포함시켜야 한다.
static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";
3. Category, <category>
인텐트를 처리해야 하는 구성요소의 종류에 관한 추가 정보를 담은 문자열이다. 개발자가 임의로 지정할 수는 있지만 대부분 플랫폼 API에서 제공하는 문자열을 이용한다.
- CATEGORY_BROWSABLE
대상 activity가 웹브라우저를 통해 시작되도록 허용하고 이미지, 이메일 등의 링크로 참조된 데이터를 표시하도록 함
- CATEGORY_LAUNCHER
해당activity가 action의 최초 activity 이며 시스템 애플리케이션 시작 관리자에 목록으로 게재된다.
4. Data, <data>
action을 수행할 데이터 또는 해당 데이터의 MIME 유형을 참조하는 URI. 제공 된 데이터의 유형은 일반적으로 인텐트의 action에 따라 결정된다. 예를 들어 인텐트가 ACTION_EDIT인 경우 데이터에 수정할 문서의 URI가 포함되어야 한다.
데이터 URI만 설정하려면 setData()를 호출한다. MIME 유형만 설정하려면 setType()를 호출한다. 필요한 경우 setDataAndType()를 사용하여 두 가지를 모두 명시적으로 설정할 수 있.
★주의: URI와 MIME 유형을 둘 다 설정하고자 하는 경우 setData()와 setType()를 호출하면 안 된다.. 이 둘은 서로의 값을 무효화하기 때문이다. URI와 MIME 유형을 둘 다 설정하려면 항상 setDataAndType()을 사용.
5. Extra
추가 정보를 담는 key-value이다. 인텐트를 이용해 액티비티 간 데이터를 주고받는 목적으로 많이 사용된다.
6. Flag
액티비티를 어떻게 시작할 것인지 설정을 정의한다. launchMode로 이해할 수 있다.
'개발 > Android' 카테고리의 다른 글
| [Android] setSystemUiVisibility 정리 (0) | 2025.02.20 |
|---|---|
| [Android] Service 정리 (0) | 2025.02.13 |
| [Android] Intent(인텐트) 정리 (0) | 2025.02.12 |
| [Android] ViewModel 정리 (0) | 2025.02.11 |
| [Android] LiveData 정리 (0) | 2025.02.11 |