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 시작하기
명시적으로 시작(Explicit intent)
6
Intent를 이용해 Activity 시작하기
암시적으로 시작(Implicit intent) 안드로이드는 지정된 데이터 타입에 대한 액션 수행에 가 장 적합한 클래스로 그 Intent를 런타임에 해결함 빌려 사용하는 기능이 어떤 애플리케이션의 것인지 미리 정확히 알지 않아도 다른 애플리케이션에 있는 기능을 사 용하는 프로젝트 작성 가능
7
Implicit intent 응용 Text를 전송할 때
Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, "Text"); intent.setType("text/plain"); startActivity(intent);
8
Action 실행하고자 하는 동작이며 Intent를 통해 어떤 작 업을 수행할 지를 지정한다. 액션 설명 ACTION_CALL
통화를 시작한다. ACTION_EDIT 데이터를 표시하고 편집한다. ACTION_MAIN 메인 엑티비티를 실행한다. 입출력되는 데이터는 없다. ACTION_VIEW 가장 일반적인 액션으로, Intent의 URI에 제공된 데이터가 가장 합리적인 방법으로 보여지도록 요청한다. ACTION_DIAL 인텐트의 URI에 지정된 번호로 전화를 걸 수 있도록 번호를 미리 눌러놓는다.
9
StartActivity & StartActivityForResult
하나의 Activity에서 다른 Activity를 호출하고자 할 때 startActivity(myIntent) myIntent 오픈할 클래스를 명시적으로 지정 혹은 수행되어야 하는 대상인 액션을 포함 startActivityForResult 실행 한 Activity가 종료되었을 때 실행한 Activity로부터 어 떠한 결과를 받고자 할 때 사용한다.
10
startActivity Android YourActivity MyActivity …
do something YourActivity Android startActivity(intent) onCreate(intent) YourActivity MyActivity
11
startActivityForResult & setResult
MyActivity YourActivity startActivityForResult SetResult() onActivityResult() Finish()
12
Activity간의 통신 Intent는 액티비티간에 인수와 리턴 값을 전달하 는 도구로도 사용된다.
Bundle 타입의 Extras를 활용하여 이름과 값의 쌍 으로 된 임의 타입의 정보를 원하는 개수만큼 전달 할 수 있다. Intent putExtra(String name, int value) Intent putExtra(String name, String value) Intent putExtra(String name, boolean value) name은 전달하는 인수에 대한 이름이 중복되지 않으면 자유롭게 붙일 수 있다.
13
Activity간의 통신(2) Extras에 저장된 값들은 아래의 메서드로 꺼낸다.
Int getIntExtra(String name, int defaultValue); String getIntExtra(String name); boolean getIntExtra(String name, boolean defaultValue);
14
통신 예제(StartActivity) – Main.java
15
통신 예제(StartActivity) – Sub.java
16
activity_main.xml activity_sub.xml
17
통신 예제
18
통신 예제(StartActivityForResult) - main
19
통신 예제(StartActivityForResult) – sub
20
activity_main.xml activity_sub.xml
21
통신 예제
22
Data 동작에 필요한 상세 데이터를 제공한다.
전화걸기 액션의 경우 ‘tel:010xxxxxxx’ 홈페이지 이동 액션의 경우 ‘ 단독 액션의 경우 별도의 Data가 필요없으나 대부 분의 액션은 목적어가 필요하며 이 목적어에 해당 하는 정보가 Data이다. ex) ACTION_CALL에 대해서 누구에게 전화를 걸 것인지 를 지정
23
액션 예제 – CallOther.java
24
액션 예제 – activity_callother.xml
25
액션 예제 - 실행결과
26
Intent Filter 수 많은 인텐트들 중에 자신에게 필요한 인텐트만을 받 기 위해 인텐트 필터가 존재함.
Manifest파일의 intent-filter 태그를 이용함
27
Intent Filter 하위 엘리먼트 action - 서비스되는 액션의 이름
android:name 속성 이용 category - 액션이 서비스되는 상황 조건 지정 속성 설명 ALTERNATIVE 이 액션이 데이터 타입의 항목에 대해 수행되는 기본 액션에 대한 대안으로 사용될 수 있어야 함을 지정 ex) 연락처의 기본 액션은 해당 연락처를 보여주는 것, 대안은 편집, 삭제 SELECTED_ALTERNATIVE 가능한 것들의 리스트가 필요할 때 DEFAULT Intent Filter에 의해 정의된 데이터 값에 대한 기본 액션. 명시적 인텐트를 이용해 띄어지는 액티비티 HOME 장치가 시작될 때 맨 처음 표시되는 액티비티 LAUNCHER 선택되어 지정된 어떤 데이터도 없이 액티비티를 런치함
28
Intent Filter 하위 엘리먼트(2)
data – 컴포넌트가 실행할 수 있는 데이터에 대한 명세를 지정할 수 있게 함 속성 설명 android:host 유효한 호스트의 이름을 지정 ex) google.com android:mimeType 컴포넌트가 다룰 수 있는 데이터의 종류를 지정 android:path URI를 위한 유효한 경로 값을 지정한다 android:port 지정된 호스트를 위한 유효한 포트를 지정 android:scheme ex) content, http
29
Intent Filter 등록 예
30
Intent Resolution 암시적 인텐트를 전달하면 해석 과정을 거쳐 보통 하나의 Activity가 결정됨
지정된 데이터에 대해 주어진 액션을 수행할 수 있 는 Activity가 여러 개 존재하는 경우, 이들 중 최 적의 Activity를 찾는다.
Similar presentations