Download presentation
Presentation is loading. Please wait.
1
Intent
2
목차 Intent Intent를 이용해 Activity 띄우기 Activity간 통신 Intent Filter
Intent Resolution
3
Intent 어떠한 액션이 수행되어야 한다는 의향을 선언할 수 있도록 해주는 메시지 전달 메커니즘
4
do something YourActivity
Intent 용도 새 Activity를 명시적으로 시작 새 Activity를 암시적으로 시작 시스템 전역에 메시지를 방송 … do something YourActivity Android Intent(do something) Intent(do something) Intent(result) Intent(result) YourActivity MyActivity
5
Intent를 이용해 Activity 띄우기
startActivity(myIntent) myIntent 오픈할 클래스를 명시적으로 지정 혹은 수행되어야 하는 대상인 액션을 포함 myIntent에 가장 필적할 액티비티 하나를 찾아 시작시킴 새로 띄운 액티비티가 종료될 때 아무런 메시지를 전달하지 않음 startActivityForResult 새로 띄운 Activity가 종료될 때 메시지 전달
6
startActivity Android YourActivity MyActivity …
do something YourActivity Android startActivity(intent) onCreate(intent) YourActivity MyActivity
7
startActivityForResult & setResult
… do something YourActivity Android Intent(do something) startActivityForResult(intent,reqCode) onCreate(intent) Intent(result) setResult(resultCode, intent) onActivityResult(reqCode, resultCode,intent) MyActivity YourActivity
8
Intent를 이용해 Activity 시작하기
명시적으로 시작(Explicit intent)
9
Intent를 이용해 Activity 시작하기
암시적으로 시작(Implicit intent) 안드로이드는 지정된 데이터 타입에 대한 액션 수행에 가 장 적합한 클래스로 그 Intent를 런타임에 해결함 빌려 사용하는 기능이 어떤 애플리케이션의 것인지 미리 정확히 알지 않아도 다른 애플리케이션에 있는 기능을 사 용하는 프로젝트 작성 가능
10
Activity간의 통신 Intent는 액티비티간에 인수와 리턴 값을 전달하 는 도구로도 사용된다.
Bundle 타입의 Extras를 활용하여 이름과 값의 쌍 으로 된 임의 타입의 정보를 원하는 개수만큼 전달 할 수 있다. Intent putExtra(String name, int value) Intent putExtra(String name, String value) Intent putExtra(String name, boolean value) name은 전달하는 인수에 대한 이름이 중복되지 않으면 자유롭게 붙일 수 있다.
11
Activity간의 통신(2) Extras에 저장된 값들은 아래의 메서드로 꺼낸다.
Int getIntExtra(String name, int defaultValue); String getIntExtra(String name); boolean getIntExtra(String name, boolean defaultValue);
12
통신 예제 – CommActivity.java
13
통신 예제 - ActEdit.java
14
activity_commactivity.xml activity_actedit.xml
15
통신 예제
16
통신 예제
17
Action 실행하고자 하는 동작이며 Intent를 통해 어떤 작 업을 수행할 지를 지정한다. 액션 설명 ACTION_CALL
통화를 시작한다. ACTION_EDIT 데이터를 표시하고 편집한다. ACTION_MAIN 메인 엑티비티를 실행한다. 입출력되는 데이터는 없다. ACTION_VIEW 가장 일반적인 액션으로, Intent의 URI에 제공된 데이터가 가장 합리적인 방법으로 보여지도록 요청한다. ACTION_DIAL 인텐트의 URI에 지정된 번호로 전화를 걸 수 있도록 번호를 미리 눌러놓는다.
18
Data 동작에 필요한 상세 데이터를 제공한다.
전화걸기 액션의 경우 ‘tel:010xxxxxxx’ 홈페이지 이동 액션의 경우 ‘ 단독 액션의 경우 별도의 Data가 필요없으나 대부 분의 액션은 목적어가 필요하며 이 목적어에 해당 하는 정보가 Data이다. ex) ACTION_CALL에 대해서 누구에게 전화를 걸 것인지 를 지정
19
액션 예제 – CallOther.java
20
액션 예제 – activity_callother.xml
21
액션 예제 - 실행결과
22
Intent Filter Android는 요청을 서비스하기 위해 사용할 애플 리케이션이 어떤 것인지 어떻게 알까?
Activity, Service, Broadcast receiver를 특정한 종류의 데 이터에 대한 액션을 수행할 수 있는 존재로 등록하는데 사용 애플리케이션 컴포넌트는 Intent Filter를 통해 다른 컴포넌 트로부터의 액션 요청을 서비스할 수 있음을 Android에 알 림 Manifest파일의 intent-filter 태그를 이용함
23
Intent Filter 하위 엘리먼트 action - 서비스되는 액션의 이름
android:name 속성 이용 category - 액션이 서비스되는 상황 조건 지정 속성 설명 ALTERNATIVE 이 액션이 데이터 타입의 항목에 대해 수행되는 기본 액션에 대한 대안으로 사용될 수 있어야 함을 지정 ex) 연락처의 기본 액션은 해당 연락처를 보여주는 것, 대안은 편집, 삭제 SELECTED_ALTERNATIVE 가능한 것들의 리스트가 필요할 때 DEFAULT Intent Filter에 의해 정의된 데이터 값에 대한 기본 액션. 명시적 인텐트를 이용해 띄어지는 액티비티 HOME 장치가 시작될 때 맨 처음 표시되는 액티비티 LAUNCHER 선택되어 지정된 어떤 데이터도 없이 액티비티를 런치함
24
Intent Filter 하위 엘리먼트(2)
data – 컴포넌트가 실행할 수 있는 데이터에 대한 명세를 지정할 수 있게 함 속성 설명 android:host 유효한 호스트의 이름을 지정 ex) google.com android:mimeType 컴포넌트가 다룰 수 있는 데이터의 종류를 지정 android:path URI를 위한 유효한 경로 값을 지정한다 android:port 지정된 호스트를 위한 유효한 포트를 지정 android:scheme ex) content, http
25
Intent Filter 등록 예
26
Intent Resolution startActivity에 암시적 인텐트를 전달하면 해석 과 정을 거쳐 보통 하나의 Activity가 결정됨 지정된 데이터에 대해 주어진 액션을 수행할 수 있 는 Activity가 여러 개 존재하는 경우, 이들 중 최 적의 Activity를 찾는다.
27
Intent Resolution 과정(1)
1. 설치된 패키지로부터 사용 가능한 모든 Intent Filter들의 리스트를 구성 2. 확인 중인 Intent와 연관된 액션이나 범주에 맞 지 않는 Intent Filter를 리스트에서 제거 1) action match는 Intent Filter가 지정된 액션을 포함하 고 있거나, 아무런 액션도 지정되지 않은 경우에 이루어 진다. 2) category match의 경우 모든 category에 일치해야함
28
Intent Resolution 과정(2)
3. Intent에 있는 데이터 URI의 각 부분이 Intent Filter의 data 태그(MIME, scheme, host/권한, path) 와 비교한다. 1) MIME 타입은 *을 이용하여 하위 타입 매치 가능 2) scheme은 URI의 프로토콜 부분 ex) tel: 3) host/권한은 URI에서 scheme과 path사이에 있는 부분 ex) 4) path는 host뒤에 오는 부분이다. ex) /ig 4. 암시적으로 Activity를 실행시킬 때, 위의 과정들로 부터 하나 이상의 컴포넌트들이 해석되는 경우에는 해 당하는 모든 컴포넌트들이 사용자에게 제공됨
Similar presentations