본문 바로가기

Android Programming

Intent(인텐트)와 Intent Filter(인텐트 필터)

인텐트는 컴포넌트 간에 필요한 데이터를 전달하고 컴포넌트를 실행하기 위해 사용됩니다.


인텐트의 쉬운 예로는 액티비티 화면 전환이 있습니다.

인텐트는 컴포넌트A가 컴포넌트B를 호출할 때 필요한 정보를 가지고 있으며,

이 정보에는 호출되는 컴포넌트B의 이름이 명시적으로 표기되기도 하고,

속성들이 암시적으로 표시되기도 합니다.


인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)로 구분됩니다.

명시적 인텐트는 인텐트를 받는 대상이 클래스명으로 지정하여 대상을 명시하는 것을 의미하고,

암시적 인텐트는 받는 대상을 명시 하지 않고 대신 특정 액션명을 지정하여 인텐트를

전달하는 것을 말합니다.



명시적 인텐트를 사용 할 때는 아래와 같이 작성합니다.

인텐트 객체를 선언할 때 첫번째 매개 변수는 현재 액티비티의 정보이고,
두번째 매개 변수는 호출할 컴포넌트를 지정하여 작성해주시면 됩니다.
그 후 startActivity 함수로 인텐트를 실행시킨다고 생각하시면 됩니다.


암시적 인텐트

위 예제 코드를 보면 앞에서 본 액티비티 호출과 차이점이 존재합니다.

액티비티 호출을 호출되는 대상의 클래스명이 들어가지만

전화걸기, 문자보내기 예제 코드를 보면 Intent에 정의 된

ACTION_CALL, ACTION_SENDTO와 같은 액션명이 들어감을 알 수 있습니다.

액션명은 지정 된 대상에게 전달되는 것이 아니라 동일한 기능을 사용하는 앱이 있으면

화면에 보여주고 사용자가 원하는 앱을 선택하여 사용할 수 있도록 합니다.


URI

URI란 'Uniform Resource Identifier'의 약자로 안드로이드에서 전화, 이메일, 문자, 웹 브라우저를 실행할 때 사용된다.

즉 안드로이드에서 URI라는 것은 어떤 자원에 접근하기 위한 유일한 주소라고 할 수 있다. 전화 같은 경우는 'tel',

문자는 'smsto',이메일은 'mailto', 웹 브라우저는 'http'를 사용한다.



그런데 어떻게 단말에 설치된 앱들 중에 해당 기능을 가진 앱들이 나타날 수 있을까요?

그것은 바로 Intent Filter(인텐트 필터)를 통해 답을 얻을 수 있습니다.


인텐트 필터는 전달되는 인텐트 정보 중에 필요한 인텐트만을 선택해서 받을 수 있는 것을 말합니다.



위 그림과 같이 암시적 인텐트의 경우는 해당 기능을 가진 앱을 인텐트 필터에서 한 번 걸쳐 호출하게 됩니다.

해당 기능을 가진 앱이 두 개 이상일 경우에는 사용자에게 등록된 앱을 보여주고 선택하도록 합니다. 

'Android Programming' 카테고리의 다른 글

안드로이드 서비스 - Daemon Service  (0) 2016.07.13
Activity 생명주기  (0) 2016.07.13
안드로이드 4대 컴포넌트  (1) 2016.07.12