728x90
출처
이 글은 안드로이드 공식 홈페이지에서 작성 된 공식 가이드를 기반으로 개인적으로 요약 및 정리한 내용입니다.
틀린 내용이 있는 경우 정정 해주시면 감사하겠습니다.
Manifest
- Manifest는 안드로이드 프로젝트에 존재하는 디렉터리로, App을 구동하는데 필요한 정보들을 담거나 Activity의 관리를 해줍니다.
인텐트
- 컴포넌트에 액션, 데이터 등을 전달하는 메시지 컴포넌트
인텐트 필터
- Intent는 메시징 객체로, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있습니다.(수신할 수 있는 인텐트를 정의합니다.)
- 인텐트 필터는 Android 플랫폼의 매우 강력한 기능입니다.
인텐트 필터는 명시적 요청뿐만 아니라 암시적 요청을 기반으로도 활동을 실행하는 기능을 제공합니다.
예를 들어 명시적 요청은 'Gmail 앱에서 이메일 보내기 활동을 시작'하도록 시스템에 지시할 수 있습니다.
이와 반대로 암시적 요청은 '작업을 할 수 있는 활동으로 이메일 보내기 화면을 시작'하도록 시스템에 지시합니다. 시스템 UI에서 사용자에게 작업을 실행할 때 어떤 앱을 사용할지 묻는 메시지가 표시되면 바로 인텐트 필터가 작동한 것입니다.
인텐트 필터 선언
- 인텐트 필터의 요소로는 action, category, data가 있습니다.
- action은 인텐트 필터에 작업을 추가하는 것으로 반드시 인텐트 필터에 하나 이상 포함 되어 있어야 합니다.
- action의 android:name은 작업의 이름을 적을 곳입니다.
- 표준 작업들은 Intent 클래스에서 "ACTION_"+"string상수"(예 : ACTION_SEND)로 정의됩니다.
이러한 작업 중 하나를 이 속성에 할당하려면 ACTION_ 다음에 나오는 string 앞에 'android.intent.action.'을 추가합니다.
예를 들어 ACTION_MAIN이면 'android.intent.action.MAIN'을 사용하고 ACTION_WEB_SEARCH이면 'android.intent.action.WEB_SEARCH'를 사용합니다.
밑에 코드에선 ACTION_SEND 작업을 추가해줬습니다. - category는 인텐트 필터의 카테고리명을 추가합니다.
- category의 android:name은 카테고리의 이름을 정의하는 곳입니다.
표준 카테고리는 Intent 클래스에서 CATEGORY_name 상수로 정의됩니다.
여기서 할당된 이름은 CATEGORY_ 다음에 나오는 name 앞에 android.intent.category.를 추가하는 방법으로 이 상수에서 파생할 수 있습니다.
예를 들어 CATEGORY_LAUNCHER의 문자열 값은 'android.intent.category.LAUNCHER'입니다. - 참고: 암시적 인텐트를 수신하려면 인텐트 필터에 CATEGORY_DEFAULT 카테고리를 포함해야 합니다.
startActivity() 메서드와 startActivityForResult() 메서드는 마치 CATEGORY_DEFAULT 카테고리를 선언한 것처럼 모든 인텐트를 취급합니다.
인텐트 필터에서 이 카테고리를 선언하지 않으면 암시적 인텐트는 활동으로 확인되지 않습니다. - data는 데이터 사양을 인텐트 필터에 추가합니다.
아래 코드는 action SEND 작업을 하고, 보내는 데이터 타입은 TEXT/PLAIN이며, 카테고리는 CATEGORY_DEFAULT입니다.
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>`
728x90
반응형
'알고리즘 문제 풀이 > 개념' 카테고리의 다른 글
백준 - 트리 순회(Kotlin) : 트리를 구현해보는 개념 문제 (0) | 2022.08.03 |
---|---|
안드로이드 - 권한 (0) | 2022.06.22 |
알고리즘 - 분할정복 (0) | 2022.05.22 |
DFS (0) | 2021.05.06 |