Intent (3) - Implicit(암시적) intent
Implicit(암시적) intent?
활성화할 패키지명과 component 명 없이 component 의 동작 만으로 활성화.
Component 의 이름을 대지 않았지만, 수행할 동작(작업)을 선언하여 또 다른 앱의 component 가 이를 처리할 때 쓰임.
예를 들어, 카톡을 하다 URL link 를 click 할 경우 브라우저가 해당 URL 을 처리하는 것이 여기에 해당.
Implicit intent 수신
◼ Intent filter
Implicit intent 에 사용하며 외부에서 해당 component 를 활성화 할 조건을 명시함.
하단과 같이 implicit intent 대상을 manifest 에 선언하여 해당 component 가 <intent-filter> tag 안에 있는 내용을 처리할 수 있다고 android system 에 알린다.
- 반드시 하나 이상의 action 을 가져야 한다.
- CATEGORY_DEFAULT 는 반드시 포함해야 한다.
Implicit intent 전달
◼ Action
활성화 할 component 의 동작 설정
- Intent 에서는 하나의 action 을 설정해야 하며 하나 이상의 action 을 설정할 수 없다.
- 정의한 action 에 해당하는 것은 모든 패키지 중에 하나 이상 존재해야 실행이 가능하다.
◼ Category
Action 의 추가적인 정보 및 설명
- 하단과 같이 수정 가능("android.intent.category.EDIT") category 를 정의하면 action + category 가 일치하는 component 가 매칭된다.
- Category 를 정의하지 않고 action 만 정의한 경우 해당 action 의 모든 category 가 매칭된다.
("android.intent.category.Default")
◼ Data & type
Component 에 데이터를 전달
- https://parkho79.tistory.com/36 (Explicit intent 전달 참조)
Action, category 와 마찬가지로 data 도 매칭 시 사용된다.
Code
1. FirstActivity
2. ThirdActivity
3. Manifest
위 예제는 하단 link 에서 확인할 수 있다.
https://github.com/parkho79/IntentSample