Building and Intent
Intnet 객체는 시스템이 어떠한 component를 실행 시킬 지 결정 하는 정보를 가지고 있다 (정확한 클래스 이름 또는 Intent를 받을 수 있는 component 항목과 같은 정보), 추가로 Intent를 받는 component가 제대로 된 기능을 수행 할 수 있도록 하는 정보(기능을 수행하고, 데이터에 따라 수행 하도록 하는 것)도 가지고 있다.
Intent가 가지고 있는 주요한 정보는 다음과 같다.
- Component name
실행하는 Component의 이름
이것은 부가적인 것이지만, Intent를 explicit 하게 만드는 매우 중요한 정보 중의 하나 이다. Intent가 오직 component 이름으로 정의된 app component에 전달 될 수 있음을 뜻한다.
Component 이름이 없는 Intent는 implicit이고 시스템은 component가 다른 Intent 정보를 기반으로 한 Intent를 받을 수 있도록 결정 한다.(action, data 그리고 category - 아래에 나열된 것들). 그래서 만약 App에서 특정 component를 실행 할 필요가 있다면, component 이름을 명시해 주어야 한다.
Note : Service를 실행 할 때에는, 항상 component 이름으로 실행 하여야 한다. 그렇지 않으면 Service가 Intent에 응답 하는 것을 확신치 못하며, Service가 실행 되는 것을 알 수가 없다.
이 Intent의 부분은 ComponentName 객체 이다. app의 패키지 이름을 포함한 목표 component의 완전히 증명된 클래스 이름을 명시 할 수 있다. 예) com.example.ExampleActivity. component 이름은 setComponent(), setClass(), setClassName() 또는 Intent 생성자로 설정 할 수 있다.
- Action
일반적인 기능 수행(view 또는 pick)을 명시한 String.
broadcast Intent의 경우, 이것은 실행하고 보고 하는 action 이다. 그 action 은 주로 나머지 intent가 어떻게 구성되어졌는데 알아낸다. - 특히 어떤 data와 extra가 포함되어 있는지.
App에서 intent를 이용한 자신만의 action을 명시 할 수 있다. (또는 다른 앱의 component를 적용 하기 위한 action), 하지만 Intent 클래스 또는 다른 framework 클래스에 정의된 action 상수를 사용하는 것이 좋다.
Activity를 실행하기 위한 일반적인 action들이 있다.
ACTION_VIEW
갤러리 App의 사진 또는 맵 App의 주소와 같은 정보를 Activity에서 사용자에게 보여줘야 할 때 이 Action을 가지고 있는 Intent와 startActivity()를 사용 하면 된다.
ACTION_SEND
이것 역시 "공유" Intent로 알고 있는것으로, 사용자가 Email App 또는 소셜 공유 App을 통해서 공유 할 수 있는 어떠한 데이터를 가지고 있다면 이 때 이 Action을 포함한 Intent와 startActivity()를 사용 하면 된다.
일반적으로 사용되는 Action을 정의한 더 많은 상수들은 Intent 클래스 참조를 통해 볼 수 있다. 시스템의 설정 App에서 특정 화면을 보여주는 Action이 Setting 클래스에 정의 되어 있는것과 같이 안드로이드 framework의 어딘가에 다른 Action들이 정의되어 있다.
Action은 setAction() 또는 Intent 생성자로 명시 할 수 있다.
만약 자신만의 Action들을 정의 한다면, 접두에 App의 패키지 이름을 포함 하여야 한다.
예)