-
Intent 인텐트, 인텐트 필터 정리Android 2019. 7. 3. 19:36
Intent 클래스
https://developer.android.com/reference/android/content/Intent
인텐트 사용법 및 인텐트 필터
https://developer.android.com/guide/components/intents-filters
안드로이드의 컴포넌트는 Intent 객체를 주고받으며 데이터를 전달한다
인텐트 종류 2가지
- 명시적 인텐트
Intent에 컴포넌트 이름을 지정하여
해당 컴포넌트를 호출하는 방식
- 암시적 인텐트
Intent에 속성을 지정해서 해당 속성에 맞는 컴포넌트를 호출하는 방식
일치하는 컴포넌트가 여러개면 사용자가 선택할 수 있는 창을 띄움
속성 해석은 각 앱의 AndroidManifest.xml 중 <intent-filter> 를 참고한다
각 액티비티에 자신이 처리할 수 있는 작업을 intent-filter에 기재한다
(명시적 인텐트를 받는데는 intent-filter 필요X)
데이터 전달 : Intent 객체
각 컴포넌트는 Intent객체를 통해 데이터를 주고받는다
- 생성자
public Intent (Context packageContext, Class<?> cls)Context : 현재 컴포넌트의 정보가있는 Context 객체
Class : 호출할 컴포넌트(클래스이름.class)
- 인텐트 생성 및 액티비티 지정하기
Intent intent = new Intent(this, 액티비티이름.class) //this는 자기자신(객체) 참조깂 또는 Intent intent = new Intent(getApplicationContext(), 액티비티이름.class)*안드로이드에서 Context란?
어떤 Activity인지. 또는 어떤 Application인지에 대한 정보
Intent 메소드
값 집어넣기(value는 아무거나 가능)
- putExtra(key, value)
값 얻기
- getExtra(key, value) : String,int, List 형태 일때
- getSerializableExtra() : value가 클래스의 객체 일때(해당 클래스명으로 형변환)
*클래스를 주고받을경우 해당 클래스가 Serializable 클래스를 implements 해야함
- getExtras() : Extra 전체 얻기
- getString(key) : String 으로 얻음 그외 getInt, getFloat 등
값얻기 예시
String data = getIntent().getExtras().getString("키이름")그 외 사용법은 각 구성요소를 정리한 글에 있음
주요속성
Action : 수행할 액션 이름(name)
Data : 데이터 URI
Category : 액션 유형
Type : 인텐트 데이터 MIME 타입
Component name : 컴포넌트의 클래스 이름
Extras : 추가 정보. 해쉬맵(key-value) 구조로 지정
action은 일치할때 또는 정의되어있지 않으면 통과가능
category는 인텐트 필터에 정의된 모든 카테고리가 반드시 일치해야 통과가능
암시적 인텐트를 만들대 카테고리를 추가하지 않은경우 자동으로
CATEGORY_DEFAULT 추가
암시적 인텐트를 받으려면 반드시
해당 액티비티에 android.intent.category.DEFAULT 추가해야함
data는 URI를 지정
scheme://host:port/path
android:mimeType=""
android:scheme=""
CATEGORY_ALTERNATIVE : 해당 데이터가 화면에 띄워진 상태에서 처리
CATEGORY_SELECTED_ALTERNATIVE : 해당 데이터가 (리스트등에서) 선택된 상태에서 처리
android.intent.action.MAIN 과 android.intent.category.HOME 을 지정하면
홈 애플리케이션이 되어 디바이스가 시작될때 자동으로 시작되는 앱이 된다
주요 액티비티 액션
Action설명
ACTION_MAIN 시작 액티비티를 지정하기 위한 액션 ACTION_VIEW 데이터의 URL로 가장 적절한 액티비티를 호출하는 액션
content://contacts/people/1ACTION_DEFAULT ACTION_VIEW와 동일 ACTION_EDIT 수정하기 위해 호출하는 액션 ACTION_DELETE 삭제하기 위해 호출하는 액션 ACTION_DIAL 전화 다이얼 액티비티를 호출하는 액션
content://contacts/people/1
tel:0101235678ACTION_CALL 전화 액티비티를 호출하는 액션
tel:0101235678ACTION_WEB_SEARCH 웹 검색 액티비티를 호출하는 액션 ACTION_SEARCH 검색 액티비티를 호출하는 액션 ACTION_SENDTO 이메일 등의 메시지 전송을 지정하는 액션 ACTION_ANSWER 전화 착신을 위한 액션 표준 액티비티 액션
- ACTION_MAIN 시작 액티비티를 지정하는 액션
- ACTION_VIEW 데이터를 사용자에게 보여주는 액션
- ACTION_ATTACH_DATA 데이터가 첨부되었다는 것을 알려주는 액션
- ACTION_EDIT 데이터 수정을 요청하는 액션
- ACTION_PICK 데이터에서 원하는 것을 선택하는 액션
- ACTION_CHOOSER 액티비티 선택 화면을 보여주는 액션
- ACTION_GET_CONTENT 사용자가 선택한 데이터를 반환하는 액션
- ACTION_DIAL 전화 다이얼 액티비티를 호출하는 액션
- ACTION_CALL 전화를 거는 액션
- ACTION_SEND 데이터를 전송하는 액션
- ACTION_SENDTO 데이터를 지정된 곳에 전송하는 액션
- ACTION_ANSWER 수신중인 전화를 다루는 액션
- ACTION_INSERT 주어진 컨테이너로 아이템을 삽입하는 액션
- ACTION_DELETE 주어진 컨테이너의 데이터를 삭제하는 액션
- ACTION_RUN 데이터를 실행하는 액션
- ACTION_SYNC 데이터 동기화를 수행하는 액션
- ACTION_PICK_ACTIVITY 액티비티를 골라주는 액션
- ACTION_SEARCH 검색을 수행하는 액션
- ACTION_WEB_SEARCH 웹 검색을 수행하는 액션
- ACTION_FACTORY_TEST 공장 테스트를 나타내는 액션
표준 브로드캐스트 액션
- ACTION_TIME_TICK 현재 시간이 변경되었음을 알려주는 액션
- ACTION_TIME_CHANGED 시간이 설정되었음을 알려주는 액션
- ACTION_TIMEZONE_CHANGED 시간대가 변경되었음을 알려주는 액션
- ACTION_BOOT_COMPLETED 기기 부팅이 완료되었음을 알려주는 액션
- ACTION_PACKAGE_ADDED 패키지가 추가되었음을 알려주는 액션
- ACTION_PACKAGE_CHANGED 패키지가 변경되었음을 알려주는 액션
- ACTION_PACKAGE_REMOVED 패키지가 제거되었음을 알려주는 액션
- ACTION_PACKAGE_RESTARTED 패키지가 다시 시작되었음을 알려주는 액션
- ACTION_PACKAGE_DATA_CLEARED 사용자가 패키지 데이터를 정리했음을 알려주는 액션
- ACTION_UID_REMOVED 시스템에서 사용자 아이디가 제거되었음을 알려주는 액션
- ACTION_BATTERY_CHANGED 배터리 정보가 변경되었음을 알려주는 액션
- ACTION_POWER_CONNECTED 외부 전원이 연결되었음을 알려주는 액션
- ACTION_POWER_DISCONNECTED 외부 전원 연결이 해지되었음을 알려주는 액션
- ACTION_SHUTDOWN 기기가 종료될 것이라는 것을 알려주는 액션
표준 Category
- CATEGORY_DEFAULT 가장 기본이 되는 액티비티
- CATEGORY_BROWSABLE 웹 브라우징을 할 수 있는 액티비티
- CATEGORY_TAB TabActivity 내에서 사용되는 탭을 지정
- CATEGORY_ALTERNATIVE 사용자가 현재 보고 있는 데이터의 대체 액션
- CATEGORY_SELECTED_ALTERNATIVE 사용자가 현재 선택한 데이터의 대체 액션
- CATEGORY_LAUNCHER 애플리케이션에서 가장 먼저 실행되는 액티비티
- CATEGORY_INFO 패키지에 대한 정보를 제공하는 액티비티를 지정
- CATEGORY_HOME 가장 처음 실행되는 액티비티를 지정
- CATEGORY_PREFERENCE 프리퍼런스 액티비티
- CATEGORY_TEST 테스트로 사용할 경우 지정
- CATEGORY_CAR_DOCK 기기가 차량용 거치대에 장착되었을 때 호출되는 액티비티를 지정
- CATEGORY_DESK_DOCK 기기가 책상용 거치대에 장착되었을 때 호출되는 액티비티를 지정
- CATEGORY_CAR_MODE 차량에서 사용할 수 있는 액티비티를 지정
표준 Extra
- EXTRA_ALARM_COUNT AlarmManager가 사용하는 알람 개수
- EXTRA_BCC 이메일의 숨은 참조 리스트
- EXTRA_CC 이메일의 참조 리스트
- EXTRA_DATA_REMOVED 데이터 전부 제거인지 아닌지를 알려주는 불린 값(ACTION_PACKAGE_REMOVED에서 사용)
- EXTRA_DOCK_STATE 거치대 상태를 요청할 때 사용하는 데이터(ACTION_DOCK_EVENT에서 사용)
- EXTRA_DOCK_STATE_HE_DESK 거치대가 디지털인지를 알려주는 숫자 값
- EXTRA_DOCK_STATE_LE_DESK 거치대가 아날로그인지를 알려주는 숫자 값
- EXTRA_DOCK_STATE_CAR 거치대가 차량용인지를 알려주는 숫자 값
- EXTRA_DOCK_STATE_DESK 거치대가 책상용인지를 알려주는 숫자 값
- EXTRA_DOCK_STATE_UNDOCKED 기기가 거치대에 없다는 것을 알려주는 숫자 값
- EXTRA_DONT_KILL_APP 애플리케이션을 재시작하는 기본 액션을 재정의하기 위해 ACTION_PACKAGE_REMOVED나 ACTION_PACKAGE_CHANGED에서 사용하는 여분의 불린 값
- EXTRA_EMAIL 전송할 이메일 주소
- EXTRA_INITIAL_INTENTS ACTION_CHOOSER에 의해 보여질 인텐트들
- EXTRA_INTENT ACTION_PICK_ACTIVITY에 사용할 인텐트 정보
- EXTRA_KEY_EVENT 인텐트에 의해 호출될 이벤트 정보를 나타내는 KeyEvent 객체
- EXTRA_PHONE_NUMBER 전화 액션 관련해 저장할 전화번호
- EXTRA_REMOTE_INTENT_TOKEN 원격 인텐트에 사용할 추가 정보
- EXTRA_REPLACING 패키지가 교체를 알리기 위해 ACTION_PACKAGE_REMOVED에 사용하는 불린 값
- EXTRA_SHORTCUT_ICON 단축 아이콘에 사용할 Bitmap 이름
- EXTRA_SHORTCUT_ICON_RESOURCE 단축 아이콘에 사용할 리소스 이름
- EXTRA_SHORTCUT_INTENT 단축 아이콘을 나타내는 이름
- EXTRA_STREAM ACTION_SEND와 함께 사용될 수 있는 스트림
- EXTRA_SHORTCUT_NAME 단축 아이콘 이름을 정의하는 이름
- EXTRA_SUBJECT 메시지 제목
- EXTRA_TEMPLATE ACTION_INSERT와 함께 사용되는 초기 데이터
- EXTRA_TEXT ACTION_SEND와 함께 사용되는 문자열
- EXTRA_TITLE ACTION_CHOOSER에 의해 사용되는 다이얼로그 제목
- EXTRA_UID ACTION_UID_REMOVED와 함께 사용되는 패키지의 아이디
표준 Flags
- FLAG_GRANT_READ_URI_PERMISSION URI 읽기 권한 플래그
- FLAG_GRANT_WRITE_URI_PERMISSION URI 쓰기 권한 플래그
- FLAG_DEBUG_LOG_RESOLUTION 디버깅 정보를 로그로 출력해주는 플래그
- FLAG_FROM_BACKGROUND 백그라운드 동작임을 알려주는 플래그
- FLAG_ACTIVITY_BROUGHT_TO_FRONT 태스크에 있는 액티비티가 다시 실행되었을 때 시스템이 설정하는 플래그
- FLAG_ACTIVITY_CLEAR_TASK 태스크를 초기화하는 플래그
- FLAG_ACTIVITY_CLEAR_TOP 실행할 액티비티가 태스크에 이미 있다면 태스크에 있는 동일한 액티비티부터 최상단의 액티비티까지 모두 제거하고 새로운 액티비티를 실행하는 플래그
- FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 태스크가 재시작할 때, 액티비티를 종료할 수 있도록 액티비티에 표시를 하는 플래그
- FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS "최근 실행 액티비티 목록"에 보이지 않도록 하는 플래그
- FLAG_ACTIVITY_FORWARD_RESULT 액티비티 처리 결과를 전달할 수 있는 플래그
- FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY "최근 실행 액티비티 목록"에서 실행될 경우 시스템에 의해 설정되는 플래그
- FLAG_ACTIVITY_MULTIPLE_TASK 액티비티를 항상 새로운 태스크에서 실행하는 플래그
- FLAG_ACTIVITY_NEW_TASK 실행한 액티비티와 관련된 태스크가 존재하면 동일한 태스크 내에서 실행하고 그렇지 않으면 새로운 태스크에서 액티비티를 실행하는 플래그
- FLAG_ACTIVITY_NO_ANIMATION 액티비티 전환시 애니메이션을 사용하지 않게 하는 플래그
- FLAG_ACTIVITY_NO_HISTORY 실행된 액티비티를 태스크 스택에서 관리하지 않도록 해주는 플래그
- FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 사용자가 홈 스크린이나 "최근 실행 액티비티 목록"에서 태스크를 시작할 경우 시스템에 의해 설정되는 플래그
- FLAG_ACTIVITY_REORDER_TO_FRONT 실행된 액티비티가 태스크에 이미 존재하는 액티비티라면 새로 실행하지 않고 태스크에 있는 액티비티를 스택 최상단으로 옮기는 플래그
- FLAG_ACTIVITY_SINGLE_TOP 실행할 액티비티가 태스크 스택 최상단에 이미 있다면 액티비티를 다시 실행하지 않는 플래그
- FLAG_ACTIVITY_CLEAR_TASK 태스크를 초기화하는 플래그
- FLAG_RECEIVER_REGISTERED_ONLY 등록된 리시버만 브로드캐스트를 받을 수 있게 해주는 플래그
'Android' 카테고리의 다른 글
서비스 Service (0) 2019.07.03 안드로이드 매니페스트 (AndroidManifest.xml) (0) 2019.07.03 액티비티 Activity (0) 2019.07.01 앱 호환성 build.gradle (0) 2019.07.01 뷰 속성 (0) 2019.06.24