인텐트란? (Intent)



안드로이드 인텐트란? (Android Intent)

- 안드로이드 시스템에서 커뮤니케이션을 담당하는 역할로 컴포넌트간의 호출과 메시지 전달에 이용한다

- 런처에 나타나지 않는(루트 액티비티가 아닌) 액티비티를 실행시킬 때 사용한다

- Activity, Service, Broadcast Receiver 컴포넌트를 활성화 시킬 수 있다

- startActivity(), startActivityForResult()에 포함되어 Activity를 호출하며, 호출된 액티비티는 getIntent()를
  이용해 메시지를 전달받고, 이후 전달받은 메시지는 onNewIntent()를 override하여 전달받을 수 있다

- startActivityForResult()를 이용해 호출된 액티비티는 인텐트에 반환값을 넣어 다시 자신을 호출한
  액티비티에게 되돌려 줄 수 있으며 이때에는 setResult()에 인텐트를 포함시켜 반환한다

- startService(), bindService()에 포함되어 Service를 호출하며, 호출된 서비스는 onStart(), onBind()를
  override하여 메시지를 전달받을 수 있다

- sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcase()등에 포함되어 Broadcast를 호출하며
  호출된 브로드캐스트는 onReceive()를 override하여 메시지를 전달받을 수 있다

- 이외에도 PendingIntent 라는 권한을 위임하는 인텐트가 있다

- 메시지를 전달할때 putExtra()를 사용하며 전달받을때에는 getExtras().get변수타입() 또는
  get변수타입Extra()을 사용한다


암시적 인텐트

ACTION_SEND를 이용한 암시적 인텐트 적용시 나오는 Chooser

명시적 인텐트와 암시적(묵시적) 인텐트 (Explicit intent & intent)

- 인텐트를 사용할때에는 명시적으로 하나의 컴포넌트를 선택하여 메시지를 전달하는 방법과
  암시적으로 여러 컴포넌트중 지정한 특성을 가진 컴포넌트중 하나를 선택하여 사용하는 방법이 있다

- 암시적 인텐트는 명시적으로 알지 못하는 컴포넌트 중 자신이 활용 가능한 컴포넌트를 다른
  어플리케이션으로부터 불러서 사용할 수 있게 해주어 여러 어플리케이션의 컴포넌트를 활용가능하게 한다
  이로인해 어플리케이션의 경계없이 서로다른 어플리케이션을 하나처럼 사용 가능하게 해준다

- 명시적 인텐트는 실행할 컴포넌트의 클래스명을 지정하여 활성화 시킨다

- 암시적 인텐트는 Action, Category, Data를 사용해 인텐트 필터에(intent filter) 걸러내고 남는
  컴포넌트를 찾아(인텐트해석:intent resolving) 이중 한가지를 createChooser()로 선택하여 실행시킨다

- 인텐트 필터는 하나뿐이 아닌 여러개를 지정하여 일치하는 필터가 있을경우 통과할 수 있다

- Action은 AndroidManifest에 정의해놓은 각각의 컴포넌트가 처리할 행동을(Action) 참조하여 사용자가
  지정한 Action과 일치하는 컴포넌트를 찾아내며 지정된 Action이 없을경우 일치한 것으로 간주한다

- Category는 AndroidManifest에 정의해놓은 각각의 컴포넌트 분류를(Category) 참조하여 사용자가
  지정한 Category와 일치하는 컴포넌트는 찾아내며 지정된 Category가 없을경우 Category가 지정되지
  않은 컴포넌트만 일치한 것으로 간주한다

- Data는 AndroidManifest에 정의해놓은 각각의 컴포넌트 URI를 참조하여 사용자가 지정한 type 또는
  schema등 과 일치하는 컴포넌트는 찾아낸다

- 인텐트를 이용한 브라우저에 웹페이지 띄우기 예제
  Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

Intent-Filter 값
Intent 클래스의 정의 AndroidManifest 일치값 설명
ACTION_MAIN android.intent.action.MAIN 시작(루트) 액티비티
ACTION_VIEW android.intent.action.VIEW 해당 자원을 보여주는 액션
ACTION_CALL android.intent.action.CALL 전화를 거는 액션
ACTION_DIAL android.intent.action.DIAL 전화 다이얼이 나오는 액션
ACTION_SEND android.intent.action.SEND 문자,메일등 데이터를 보내는 액션
ACTION_SCREEN_ON android.intent.action.SCREEN_ON 화면이 켜지는 액션
ACTION_BATTERY_LOW android.intent.action.BATTERY_LOW 배터리 부족 액션

Intent 클래스의 정의 AndroidManifest 일치값 설명
CATEGORY_DEFAULT android.intent.category.DEFAULT 기본 카테고리
CATEGORY_LAUNCHER android.intent.category.LAUNCHER 어플리케이션 런쳐로 실행되는 분류
CATEGORY_HOME android.intent.category.HOME 홈스크린에 표시되는 액티비티
CATEGORY_BROWSABLE android.intent.category.BROWSABLE 인터넷 브라우저 사용분류

http://developer.android.com/guide/topics/intents/intents-filters.html#iobjs
RSS :
Response