Be Developer

[Android] 인텐트 및 인텐트 필터(Intent and IntentFilter) 본문

Android

[Android] 인텐트 및 인텐트 필터(Intent and IntentFilter)

yujin_dev 2019. 4. 30. 13:14
반응형

인텐트(Intent)

- 다른 앱 구성 요소로부터 작업을 요청할 수 있음

- 기본적인 사용 3가지

  1. 액티비티 시작

  2. 서비스 시작

  3. 브로드캐스트 전달

 

◆ 인텐트 유형

1. 명시적 인텐트

- 시작할 구성 요소를 이름으로 지정

- 본인의 앱 안에서 구성 요소를 시작할 때 사용

- 시스템이 즉시 Intent 객체에서 지정된 앱 구성 요소를 시작함

 

2. 암시적 인텐트

- 수행할 일반적인 작업을 선언하여 다른 앱의 구성 요소가 이를 처리할 수 있도록 함

- Android 시스템이 시작시킬 적절한 구성 요소를 찾음 (인텐트의 내용을 기기에 있는 다른 여러 앱의 매니페스트 파일에서 선언된 인텐트 필터와 비교. 호환되는 인텐트 필터가 여러 개인 경우, 시스템은 대화상자를 표시하여 사용자가 선택하게 함)

- 인텐트 필터 : 앱의 매니페스트 파일에 들어있는 표현. 해당 구성 요소가 수신하고자 하는 인텐트의 유형을 나타낸 것.

 

암시적 인텐트 실행 과정

1. 액티비티 A가 Intent를 생성하여 이를 startActivity()에 전달

2. Android 시스템이 해당 인텐트와 일치하는 인텐트 필터를 찾아 모든 앱을 검색. 일치하는 항목을 찾으면,

3. 시스템이 일치하는 액티비티(액티비티 B)를 시작하기 위해 그 액티비티의 onCreate() 메서드를 호출하여 이를 Intent에 전달

 

◆ 인텐트 구축

1. Intent에 포함된 기본 사항 = Intent를 정의하는 특성

     : Android 시스템은 이 속성을 읽어 어느 앱 구성 요소를 시작해야 할지 확인

   - 구성 요소 이름 : 구성 요소 이름이 있으면 명시적 인텐트, 없으면 암시적 인텐트

   - 작업 : 수행할 일반적인 작업을 나타내는 문자열 (ex. ACTION_VIEW, ACTION_SEND)

   - 데이터 : 작업을 수행할 데이터 또는 해당 데이터의 MIME 유형을 참조하는 URI

   - 카테고리 : 인텐트를 처리해야 하는 구성 요소의 종류에 관한 추가 정보를 담은 문자열. 대부분의 인텐트에는 카테고리가 없어도 됨 (ex. CATEGORY_BROWSABLE, CATEGORY_LAUNCHER)

 

2. Intent가 제공할 수 있는 기타 정보

   - 엑스트라 : 요청한 작업을 수행하기 위해 필요한 추가 정보를 담고 있는 키-값 쌍

   - 플래그 : 인텐트에 대한 메타데이터와 같은 기능

 

◆ 암시적 인텐트 수신

- 매니페스트 파일 내 앱 구성 요소에 인텐트 필터 선언 (<intent-filter>)

- 각 인텐트 필터가 인텐트의 작업, 데이터 및 카테고리를 근거로 어느 유형의 인텐트를 허용하는지 나타냄

- <intent-filter> 세 가지 요소 (이 중 하나 이상을 사용하여 허용할 인텐트 유형 지정)

   1. <action> : name 특성에서 허용된 인텐트 작업 선언

   2. <data> : 허용된 데이터 유형 선언

   3. <category> : name 특성에서 허용된 인텐트 카테고리 선언 (암시적 인텐트를 수신하려면 CATEGORY_DEFAULT 반드시 포함)

 

 

반응형
Comments