안드로이드 세미나

138
1 박 박 박 (010-9985-2539) 박박 박박박 박박박박 .(^^;) 박박박박박 박박박

description

안드로이드 세미나. 2. C/C++ 언어를 자바 언어에서 사용 가능토록 함. C/C++. 안드로이드의 개괄적인 이해. 2. 안드로이드의 개괄적인 이해. 1 Applications. 안드로이드에서는 E-mail 클라이언트 , SMS 프로그램 , 달력 , 지도 , 브라우저 , 전화번호부 , 그리고 다른 것들을 포함하는 핵심 애플리케이션들이 탑재되어 있다 . 모든 애플리케이션은 JAVA 프로그래밍 언어로 작성된다. 2. 안드로이드의 개괄적인 이해. 2 Applications Framework. - PowerPoint PPT Presentation

Transcript of 안드로이드 세미나

Page 1: 안드로이드 세미나

1 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

안드로이드 세미나

Page 2: 안드로이드 세미나

2 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

C/C++C/C++ 언어를자바 언어에서

사용 가능토록 함

Page 3: 안드로이드 세미나

3 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

1 Applications

안드로이드에서는 E-mail 클라이언트 , SMS 프로그램 , 달력 , 지도 , 브라우저 , 전화번호부 ,

그리고 다른 것들을 포함하는 핵심 애플리케이션들이 탑재되어 있다 . 모든 애플리케이션은

JAVA 프로그래밍 언어로 작성된다 .

Page 4: 안드로이드 세미나

4 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

2 Applications Framework

안드로이드 애플리케이션 프레임워크는 Java 기반의 Framework 이며 , 대부분이

JNI(Java Native Interface) 통해 C/C++ 코드로 작성되어 있다 .

위와 같은 서비스들은 핵심 시스템 서비스를 담당하는 Core 시스템 서비스들과

하드웨어와의 인터페이스를 담당하는 하드웨어 서비스들로 구성된다 .

개발자들은 애플리케이션 Framework API 에 완벽하게 접근할 수 있다 .

Page 5: 안드로이드 세미나

5 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

3 Libraries

시스템 C 라이브러리 libc

임베디드 리눅스 기반의 디바이스를 위해서 구현된 표준 C 시스템 라이브러리의 구현물이며 Bionic 이라 한다 .

Bionic 은 임베디드에서 사용을 위해 최적화된 직접 구현된 Libc 이다 . 기존 Linux Libc 를 사용하지 않고 새로 만든

이유는 user-space 에서는 GPL(General Public License : GNU 일반 공중 사용 허가서로 소스 수정 시 꼭

소스를 공개하여야 한다라는 규약이 있다 .) 을 사용하지 않기 위한 라이센스 이유와 , 개별 프로세스마다 포함되어야

하는 영역이기 때문에 크기를 최소화하기 위해서이다 . 또한 제한적 CPU 파워하에서도 빠를 필요가 있기 때문이다 .

Function Library

웹 브라우저를 위한 WebKit, PacketVideo 의 OpenCore 플랫폼 기반의 미디어 프레임워크 , 가벼운 DB SQLite

안드로이드 시스템의 다양한 컴포넌트에 의해

사용되는 C/C++ 라이브러리 집합 .

이러한 라이브러리의 기능들은 안드로이드

애플리케이션 Framework 를 통해서 개발자들에게

제공된다 .

Page 6: 안드로이드 세미나

6 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

Native Server

Surface Flinger 는 2D/3D Surface 의 조합 및 다양한 애플리케이션에서 사용된 Surface 들을 Frame buffer

디바이스로의 렌더링을 제어함으로써 , 시스템 전역에 걸쳐서 Surface 의 구성을 가능하게 한다 .

Audio Flinger 는 모든 오디오 output 디바이스를 제어하는 것으로써 , 다양한 오디오 스트림을 PCM 오디오 output

경로로 처리한다 .

Page 7: 안드로이드 세미나

7 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

4 안드로이드 런타임 (RunTime)

Dalvik 가상머신은 안드로이드에서 자체적으로 만든 것으로

clean-room( 청정영역 ) 을 제공하는 가상 머신 이다 .

이것은 , 애플리케이션의 호환성과 실행 일관성을 제공하며 ,

최적화된 파일 포맷 (.dex) 과 Dalvik 바이트 코드로 실행한다 .

더불어 빌드 시점에서 Java.class / .jar 파일들은 .dex 파일로

변환된다 .

Dalvik 가상머신은 임베디드 환경을 위해 디자인 되었다 . Dalvik 은 디바이스 별로 다양한 가상머신

프로세스들을 지원하며 , 높은 수준으로 CPU 에 최적화된 바이트코드 인터프리터에 기반하여

실행 시 메모리를 매우 효율적으로 사용한다 .

Core 라이브러리는 Java 언어로 라이브러리들을 사용할 수 있도록 한다 .

Core 라이브러리들은 강력하지만 , 단순하고 익숙한 개발 플랫폼을 제공하는 Java 언어를 위한

Core API 들을 포함하고 있다 . 여기에는 Data structure, Utility, File Access,

Network Access, Graphic 등이 포함되어 있다 .

Page 8: 안드로이드 세미나

8 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

5 리눅스 커널

안드로이드는 리눅스 커널을 기반하고 있으나 , 리눅스는 아니다 . X-Window 와 같은 내장 윈도우

시스템을 포함하지 않으며 , glibc 를 지원하지 않는다 . 표준 리눅스 유틸리티 전체를 포함하지

않는다 .

안드로이드 리눅스 커널 버전 2.6.23, 2.6.24, 2.6.25, 2.6.27 을 사용해 왔으며 안드로이드 지원을

위해 리눅스 커널 확장을 위한 패치를 포함한다 .

안드로이드에서 리눅스를 사용하는 이유는 메모리 및 프로세스 관리 , Permission 기반의 보안 모델 ,

검증된 드라이버 모델 , 공유 라이브러리 지원 , 오픈 소스 기반 등의 장점 때문이다 .

안드로이드 확장 리눅스 커널 영역은 , Alarm, Ashmem, Binder, Power Management,

Low Memory Killer, Kernel Debugger, Logger 이다 .

Page 9: 안드로이드 세미나

9 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

2 안드로이드의 개괄적인 이해

6. 기타

Page 10: 안드로이드 세미나

10 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

클래스 파일

바이너리 XML& 리소스 파일(.xml, .arsc)

DX 유틸리티

Dalvik 파일(.dex)

배포 유틸리티(adb)

에뮬레이터혹은

디바이스

Java 소스(.java)

패키징 도구(aapt)

리소스 파일(png,mp3…)

XML 파일(.xml)

1. 안드로이드 개발 프로세스

java 컴파일러(javac)

An

dro

id P

ack

ag

e F

ile F

orm

at

(.ap

k) 압

축파

일이

다.

Page 11: 안드로이드 세미나

11 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

2. Application Data

Application File Application Data Folder

Page 12: 안드로이드 세미나

12 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

3. 안드로이드 구동

ARM basedYour Target Board

Android bootloaderUSB loader

Load Linux

Start kernel- /init/main.c

Initialization process/etc/init.rc

Start Android Service

Consoleadbdservice managermountddebuggerdzygotemediaserverinstalldflash_recovery

Low level 안드로이드 구동 High level 안드로이드 구동

Page 13: 안드로이드 세미나

13 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

!!! 여기서 잠깐 안드로이드 프로그램 ( 팩키지 )

사용자 ID : root 모두 접근 가능

리눅스 환경 안드로이드

A 프로그램 설치

사용자 ID : app??

Group : app??

자동으로 user 등록

저장 공간

B 프로그램 설치

사용자 ID : app??

Group : app??

자동으로 user 등록

저장 공간

A B 서로의 공간 Write 접근 불허

사용자 ID : AGroup : C

A 만 접근 가능 공간 생성

A 권한으로 파일 생성 및실행 수정 삭제 종료 가능

사용자 ID : BGroup : C

B 만 접근 가능 공간 생성

B 권한으로 파일 생성 및실행 수정 삭제 종료 가능

같은 group허용 가능

Page 14: 안드로이드 세미나

14 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

!!! 여기서 잠깐

Process

PID : 1

PPID : 0

최초 프로세스

Process

PID : 2

PPID : 1새로운

process실행

Process

PID : 4

PPID : 2새로운

process실행

Process

PID : 3

PPID : 1새로운

process실행

Process

PID : 5

PPID : 3새로운

process실행

Page 15: 안드로이드 세미나

15 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

1

2

3

4

5

Page 16: 안드로이드 세미나

16 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

zygote 프로세스

어플리케이션에서필요로 하는

기본 라이브러리모두 로딩된

상태

사용자 메모장 실행

메모장프로그램fork 에 의해

복사본 proc 생성

브라우져프로그램

fork 에 의해

복사본 proc 생성브라우져 관련Dex 메모리

로딩

메모장 관련Dex 메모리

로딩

사용자 브라우져 실행

Page 17: 안드로이드 세미나

17 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

테스트 사항 : procmem 확인과 ps 확인

Page 18: 안드로이드 세미나

18 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

Page 19: 안드로이드 세미나

19 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

!!! 여기서 잠깐

프로그램

실행CPU

메모리 상에서 처리

프로세스

동작메인 메모리

메모리에 로딩

인스턴스

객체 생성

C : malloc()

C++ : new

안드로이드와 관련한 프로그램에서 인스턴스와 프로세스 그리고 쓰래드에 대해서

Page 20: 안드로이드 세미나

20 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

프로세스

프로세스는 반드시 하나 이상의 쓰레드가 있습니다 .

즉 프로세스는 혼자서는 아무런 일도 할 수 없습니다 .

예를 들어 윈도우 시스템에서는 csrss.exe 프로세스가 순회하면서 쓰레드를 관리하고 ,

커널에게 쓰레드의 실행을 알립니다 .

프로세스

쓰래드

처리…

쓰래드

처리…

처리…

Page 21: 안드로이드 세미나

21 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

프로세스 A

실행파일을구성 명령어Code 영역

지역 변수전달 인자

프로그램 할당

Static 변수전역 변수

Stack 영역

Heap 영역

Data 영역

Process 메모리 구조

쓰래드 A

쓰래드 B

프로세스 B

실행파일을구성 명령어Code 영역

지역 변수전달 인자

프로그램 할당

Static 변수전역 변수

Stack 영역

Heap 영역

Data 영역

Process 메모리 구조

쓰래드 A

메모리 공유

쓰래드 B

메모리 공유

OAIDL

서로 메모리 접근

서로 메모리 접근

X직접

메모리 공유

메모리 공유

Page 22: 안드로이드 세미나

22 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

3 안드로이드의 전반 적인 이해

4. 어플리케이션의 구성

Page 23: 안드로이드 세미나

23 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

1 Activities

; 애플리케이션의 하나의 스크린 또는 화면을 일컫는 말이다 .

UI 컴포넌트를 화면에 표시하고 , 시스템이나 사용자의 반응을 처리할 수 있다 .

윈도우의 창의 개념과 유사하다 .

윈도우window

액티비티Activities

뷰 그룹view group

뷰view

위젯widget

사용자 반응 처리

UI 요소 배치

1.1 Activities 란 ?

Page 24: 안드로이드 세미나

24 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

ListView 그룹view group

리스트 내용

어뎁터Adapters

List View

박성근 5

박성근 4

박성근 3

박성근 2

박성근 1

ListAdapter

박성근 5

박성근 4

박성근 3

박성근 2

박성근 1

Cursor

데이터 처리용의

Page 25: 안드로이드 세미나

25 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; Activity 는 라이프사이클을 가진다 .

Activitystarts

OnCreate()

Activity isshut down

OnStart()

OnResume()

Activity isRunning

OnPause()

OnStop()

OnDestroy()

Process iskilled

다른 APP 실행 시메모리가 부족할 경우

당신의 액티비티가foreground 로돌아왔다 .

OnRestart()

당신의 액티비티가foreground 로돌아왔다 .

당신의 액티비티가 더 이상 보이지 않는다 .

새로운 액티비티가 실행되었다

User navigates backto your activity

1.2 Activities 라이프 사이클

Page 26: 안드로이드 세미나

26 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; Activity 와 관련이 깊은 프로세스 라이프 사이클에 대해서 알아 보자 .

foreground process

사용자가 현재 조작중인 최상위 화면의 Activity 를 말한다 . 가장 중요한 프로세스이므로

새로운 App 가 실행될 때 메모리가 부족하다면 제일 마지막에 제거되는 프로세스 이다 .

foreground activity

1.3 프로세스 라이프 사이클

Page 27: 안드로이드 세미나

27 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

visible process

사용자 화면에 보여지지만 foreground 가 아닌 것을 말한다 .

예를 들어 foreground 대화상자의 뒤에 있는 activity 를 생각하면 된다 .

visible process 는 foreground process 다음으로 중요하다 .

visible activity

대화 상자

Page 28: 안드로이드 세미나

28 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

background process

사용자에게 보여지지 않는 액티비티 이다 . 그러므로 더 이상 중요하지 않으며

시스템은 foreground 나 visible 프로세스가 메모리를 요구하면 background activity 를

안전하게 제거할 수 있다 .

background activity

Page 29: 안드로이드 세미나

29 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

empty process

이 프로세스는 아래의 라이프사이클에서 빨강색 부분처럼 Activity shutdown 된 Activity 이다 .

하지만 이 프로세스는 어떤 활성화된 App 컴포넌트도 가지고 있지 않지만 , 차후 다시 이 APP 가

실행될 때를 대비해서 캐쉬의 용도로 메모리를 점유하고 있다 . (startup 시간 단축 )

이런 프로세스는 시스템적으로 언제 사라질지 모른다 .

empty activity

Page 30: 안드로이드 세미나

30 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

service process

이 프로세스는 특정한 서비스를 위하여 존재하며 UI 가 없다 .

예를 들어 백그라운드에서 SMS 가 수신되면 사용자는 모르게 수신된 SMS 를 데이터베이스에

저장한다거나 스팸 확인을 하는 등의 처리를 위해 존재하는 경우가 많다 .

이 프로세스는 foreground, visible process 를 보유하기에 충분한 메모리가 존재 하는 한

제거되지 않고 유지 된다 .

service process

Page 31: 안드로이드 세미나

31 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 앞에서 프로세스의 라이프 사이클을 설명하였다 .

그 내용 중 Activity 와 프로세스가 동일한 것이 아니냐는 착각에 빠진다 .

한 프로세스는 여러 개의 Activity 를 가질 있고 , 또한 한 프로세스에는 foreground activity,

visible activity, background activity 등 모두 가질 수 있다 .

A 프로세스

service process

대화 상자foreground activity

visible activity

background activity

Page 32: 안드로이드 세미나

32 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 프로세스의 우선순위 ( 우선순위가 낮을 수록 메모리 부족 시 우선 제거 대상이 된다 .)

A 프로세스 B 프로세스 C 프로세스

foreground activity

포함

visible activity

포함

backup activity

포함> >

Page 33: 안드로이드 세미나

33 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

1.4 용어가 어려운 Task 에 관해서

Home

Task 1

Task 2

Home

Activity1

1활성화

Activity2

2활성화

Activity3

3활성화

Activity4

4활성화

Activity5

5활성화

Activity6

6활성화

Home

KeyBack Key

!!! Activity 의 스택이라고 볼 수 있다 .

Page 34: 안드로이드 세미나

34 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 한 프로세스는 기본적으로 하나의 Thread 를 가지고 있고 , 추가적으로 Thread 를 생성 가능 하다 .

1.5 Thread 에 대해서

Process

1

2

3

4

E

E

Page 35: 안드로이드 세미나

35 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 안드로이드 애플리케이션의 가장 기본적인 구성 단위는 Activity 라는 클래스 이다 .

이 Activity 는 한 화면을 나타내지만 그 자체로는 아무 것도 보여줄 수 없고 , Activity 에

View 와 ViewGroup 클래스를 사용해야만 비로소 화면에 무엇인가를 표시할 수 있다 .

뷰 그룹view group

뷰view

위젯widget

View 클래스는 화면에서 직사각형 형태의

레이아웃과 각종 정보를 저장하는 자료

구조이다 . 화면의 크기 조절 , 레이아웃 구성 ,

그리기 , 포커스 변화 , 스크롤링과 , 키 처리

등을 위해 사용된다 .

view 클래스는 위젯의 base 클래스이기도

하다 .( 위젯 : 컨트롤과 유사 )

1.6 view 와 view group 에 대해서

Page 36: 안드로이드 세미나

36 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

view group

view group view view

view view view

안드로이드는 트리 구조의 사용자 인터페이스를 제공한다 .

LinearLayout

RelativeLayout view view

view view view

화면에

그리는

순서

view group 은 아래와 같이 구성된다 .

Page 37: 안드로이드 세미나

37 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

0,0기준좌표

layout_width

layout_height

margin

Hello Hello

WRAP_CONTENT FILL_PARENT

컨텐츠를 표시한는 데 충분한 크기로 부모 객체와의 패딩 ( 여백 ) 을 제외한

나머지 공간을 차지

문자열을 표시하는 라벨 view 문자열을 표시하는 라벨 view

layout viewgroup

padding

1.6.1 Layout 의 좌표와 용어

Page 38: 안드로이드 세미나

38 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

가장 단순한 레이아웃 객체인데 , 단순히 비어있는 공간이라고 생각하면 된다 .

FrameLayout 은 모든 객체들이 화면 왼쪽 위를 기준으로 그린다 .

즉 사용자가 각 객체의 절대적 위치를 설정할 수 없다는 의미이다 .

원하는 객체를 여러 개를 그린다면 화면좌표 0,0 을 기준으로 모두 겹친다 .

viewgroup : FrameLayout0,0기준좌표

view

view

view 와 viewgroup 과의 배치 관계

view

1.6.2 FrameLayout

Page 39: 안드로이드 세미나

39 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

모든 하위 구성 요소를 수직 또는 수평 형태 중 하나로 정렬하여 그리는 방식이다 .

viewgroup : LinearLayout

view

margin 설정 : 5px

5px

view

view

5px

gravity 설정 : 좌우정렬

view( 가중치 0)

view( 가중치 1)

view( 가중치 0)

weight 설정 : 가중치 값

1.6.3 LinearLayout

view

view

view

Page 40: 안드로이드 세미나

40 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

행과 열이라는 개념이 있어서 테이블의 행과 열을 기준으로 하위 구성 요소들을

배치한다 . 각 셀은 View 오브젝트로 구성되며 각 View 의 화면상 절대적 위치는

테이블 구조에 따라 상대적으로 결정된다 .

viewgroup : TableLayout

view view

view view

앞에서 처럼 (gravity 설정 : 좌우정렬 ), (weight 설정 : 가중치 값 ) 및 padding 처리 가능

view

view

view view

1.6.4 TableLayout

Page 41: 안드로이드 세미나

41 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

정확한 x,y 좌표를 제시해야 하위 구성 요소들을 화면에 표시 할 수 있다 .

서로 다른 단말기 환경에서는 프로그래머가 예상한대로 그려지지 않을 수 있으므로

본 Layout 은 가급적이면 피하는 것이 좋다 .

viewgroup : AbsoluteLayot0,0기준좌표

view1

view2

view3

view 와 viewgroup 과의 배치 관계

(view1 x=10,y=10 경우 )

1.6.5 AbsoluteLayout

10

10

Page 42: 안드로이드 세미나

42 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

하위 구성 요소들이 다른 구성 요소의 상대적인 위치에 따라 그려진다 .

예를 들어 두 개의 객체가 있을 때 하나를 다른 객체의 아래에 그리거나 위에 그리는 등의

설정이 가능하다 .

1.6.6 RelativeLayout

TextView

width : Fill Parentheight : wrap contenttext : Type here

2

Button

width : wrap contentheight : wrap contenttext : “cancel”

5

ID : label

EditText

ID : entrywidth : Fill Parentheight : wrap content

3

below : “label”

RelativeLayout

width : Fill Parentheight : wrap contentbackground : bluepadding : 10

1

Button4

ID : okwidth : wrap contentheight : wrap contentmarginLeft:10text : “Ok”

below : “entry”alignParentRight:true

toLeft : “ok”alignTop : “ok”

Page 43: 안드로이드 세미나

43 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Page 44: 안드로이드 세미나

44 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Gallery ViewGroup Class

이미지를 수평으로 스크롤 하면서 보여준다 .

GridView ViewGroup Class

눈금 구조를 보여준다 .

1.6.7 기타 view group

Page 45: 안드로이드 세미나

45 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

ScrollView ViewGroup Class

수직으로 구성 요소의 열을 스크롤링 하게 된다 .

TabHost ViewGroup Class

클릭에 반응하는 탭 선택 목록을 제공하며 ,

탭을 클릭하면 애플리케이션이 바뀐다 .

Page 46: 안드로이드 세미나

46 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Spinner ViewGroup Class

한 줄짜리 텍스트 박스 안에서 목록의 아이템을 한 번에 하나씩 보여준다 .

SurfaceView ViewGroup Class

그리기 전용인 표면에 직접 접근할 수 있도록 한다 .

SurfaceView 는 위젯을 이용하는 프로그래밍

보다 점과 라인을 직접 그리는 방식을 사용한다 .

Page 47: 안드로이드 세미나

47 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

ViewFlipper ViewGroup Class

한번에 한 개의 아이템을 보여주는 목록이다 .

이것은 슬라이드 쇼처럼 시간 주기로 아이템을

바꾸도록 설정할 수 있다 .

ViewSwitcher ViewGroup Class

ViewFlipper 와 유사하다 .

Page 48: 안드로이드 세미나

48 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

ListView ViewGroup Class

스크롤링 되는 하나의 컬럼 리스트를 보여 준다 .

Page 49: 안드로이드 세미나

49 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

2. Service

Service 는 UI 와 상관 없이 오랫동안 존재하면서 실행되는 코드이다 .

예를 들면 재생 목록에서 노래를 재생하는 미디어 플레이어 같은 것을 Service

라고 할 수 있다 . 미디어 플레이어 APP 는 사용자가 곡을 선택하고 재생을

시작하는 하나 이상의 Activity 를 가지고 있지만 , Activity 가 음악을 재생하는

것이 아니다 .

Activity1

Activity Activity

Activity2

Service

동영상의 재생을 시작한다 .재생

Home

or Back

Page 50: 안드로이드 세미나

50 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

2.1 Service 의 생명주기

2.1.1 StartService

안드로이드의 기본 구조

startService() 로부터서비스가 시작된다 .

OnCreate()

Service isshut down

OnStart()

service 실행 중

OnDestroy()

service 가 종료 되었다 .(콜백 없음 )

특정 백그라운드에서 동작할 Service 를 개시한다 .

예를 들어 서버 - 클라이언트간의 관계에서 서버 측에서

서비스 할 수 있는 프로그램을 가동하는 것과 같다 .

Page 51: 안드로이드 세미나

51 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

2.1.2 BindService

bindService() 로부터서비스가 시작된다 .

OnCreate()

Service isshut down

OnBind()

OnDestroy()

Client interacts with the service

OnUnbind()

OnRebind()

StartService 에서 가동된 Service 에

bind 하여 특정 서비스를 이용하는 것을

말한다 .

Page 52: 안드로이드 세미나

52 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

2.1.3 StartService 와 BindService 의 관계

startService() 로부터서비스가 시작된다 .

1

동영상을 재생하는

서비스를 가동

2

Activity

3

Play 4

Pause 5

Stop 6

stopService7

main thread 1

Process

동영상을 재생을

직접 처리도 가능

하나의 Process 에서 돌아 갈 때

Page 53: 안드로이드 세미나

53 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Page 54: 안드로이드 세미나

54 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

startService() 로부터서비스가 시작된다 .

1

동영상을 재생하는

서비스를 가동

2

Activity

3

bindService() 로부터서비스가 시작된다 .

Bind

4

Play 5

Pause 6

Stop 7

Unbind 8

stopService9

하나의 Process 에서 확장 Thread 를 생성하여 돌아 갈 때

main thread 1 thread 2

Process

Page 55: 안드로이드 세미나

55 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Page 56: 안드로이드 세미나

56 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

startService() 로부터서비스가 시작된다 .

1

동영상을 재생하는

서비스를 가동

2

Activity

3

bindService() 로부터서비스가 시작된다 .

Bind

4

Play 5

Pause 6

Stop 7

Unbind 8

stopService9A

IDL

두 개의 Process 에서 돌아 갈 때

Process 1(main thread) Process 2(main thread)

Page 57: 안드로이드 세미나

57 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Page 58: 안드로이드 세미나

58 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

3. Broadcast Receivers

핸드폰으로 전화가 걸려오거나 , 데이터 네트워크 접속이 활성화 되었을 경우와

같이 외부에서 이벤트가 발생한 시점에 어떤 처리를 하기 위해 사용된다 .

SMS_RECEIVED

Components

Intent

Broadcast

SMS_RECEIVED

Components

Receiver

Page 59: 안드로이드 세미나

59 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

4. Content Providers

어떤 APP 데이터를 다른 APP 에서 공유할 필요가 있을 때 유용하게 사용한다 .

이 클래스를 이용하면 다른 APP 에서 데이터를 저장하거나 가지고 올 수 있다 .

Components A

Content Resolver

Components

; 데이터를 쓰거나 읽거나 수정할 수

있는 API 를 제공한다 .

Content Providers

; Content Providers 의 데이터

구조는 SQLite 혹은 파일 등

원하는 구조로 설계할 수 있다 .

Preferences

Files

SQLite(DB)

Network

InterfaceContent Provider Class

Content Providers 는 Intents 를 통해서 구동

되지 않는다 . Resolver 에 의해서 활성 / 비활성

요청

Components B

Content Resolver

Page 60: 안드로이드 세미나

60 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 안드로이드 APP 마다 자신만의 데이터 영역과 ID 를 가진다 .

다른 APP 에서 데이터를 접근하기 위해서는 content provider 를 통해서 가능하다 .

content providers 내부의 Data Storage 종류에 대해서 살펴 보자 .

; APP 설정 메뉴 즉 config 파일 등으로 대부분 이용된다 .

XML 로 저장되는 형식 ( 저장 방식 : name,value)

전체로 공유 파일 하나 파일명을 지정하지 않음 ( 자신이 가진 패키지 명으로 만들어짐 )

컴포넌트 별로 사용 파일명을 지정해서 생성 ()

SharedPreferences prefs = getPreferences(0);

SharedPreferences.Editor editor = prefs.edit();

editor.putString("prefs_name1", "prefs_value1");

editor.commit();

4.1 Data Storage

4.1.1 Preferences

Key name

Key value

Page 61: 안드로이드 세미나

61 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; 파일 형태의 read/write 가 가능하다 .

InputStream is = getAssets().open("sample.txt");

int size = is.available();

byte[] buffer = new byte[size];

is.read(buffer);FileOutputStream fos =

openFileOutput("sample.txt", Activity.MODE_WORLD_WRITEABLE);

fos.write(buffer);

fos.close();

is.close();

4.1.2 Files

file 접근

Page 62: 안드로이드 세미나

62 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; SQLite 를 이용하여 데이터베이스를 구성할 수 있다 .

( adb shell sqlite3 /data/data/ )

4.1.3 Database

SQLite3 Query

; TCP/IP 를 이용하여 데이터를 가지고 올 수 있다 .

상세한 사용법은 셈플 코드 참조

4.1.4 네트워크

소켓 통신

Page 63: 안드로이드 세미나

63 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

; Content Providers 를 서버로 본다면 Resolver 는 클라이언트에 해당한다 .

Content Providers 를 접근하기 위해 알아야 될 사항

1) URI

2) 받고자 하는 데이터 필드명를 알아야 한다 .

3) 필드의 타입을 알아야 한다 .

예 ) URI : "content://org.kandroid.sample.Provider/namecard"

사용법은 DB 사용법과 유사하다 .

4.2 Content Resolver

content://com.example.transportationprovider/trains/122

A B C D

기본 Prefix 권한 파트 Path ID

Page 64: 안드로이드 세미나

64 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Components A

Content Resolver

content://org.kandroid.sample.Provider/namecard

Components A

Content providers

URI

content://org.kandroid.s…

결과 전달0101234568

박성근 전화번호를 알려주세요

숫자로 알려주세요 .

Page 65: 안드로이드 세미나

65 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

ComponentsComponents

Context.startActivity()Activity.startActivityForResult()

Context.startService()Context.bindService()

Context.sendBroadcast()Context.sendOrderedBroadcast()Context.sendStickyBroadcast()

Activity

Service

Broadcast

!!! 전달 대상 APP 구성 항목 3 가지

Activity

Service

Broadcast

or

or

(Intents)

담아서 전달

; 인텐트를 통해서 컴포넌트 활성화

5. Intents

어떤 A 라는 컴포넌트가 B 컴포넌트를 실행 시키기 위해서 메시지를 전달하는 오브젝트이다 .

Page 66: 안드로이드 세미나

66 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

5.1 Intent 의 구성요소 6 가지

구성요소 설명

Component Name 인텐트 전달 대상의 컴포넌트 명

Action 동작 관련 ( 예 : SMS 를 받았다 .)

Category 대상의 종류 ( 예 : SMS)

Data 보통 데이터 위치와 타입을 설정 ( 예 : 전화번호 )

Extra 기타 정보 전달을 위함 ( 예 : 전화번호 관련 정보 )

Flag 다양한 플래그

Page 67: 안드로이드 세미나

67 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Components

intent 작성내용 : … to class A

1

intentTo Class A

2

Components

Class A

활성화5

안드로이드 System

ActivityManager 를통해 패키지 메니져에서 해당 class 이름을 찾는다 .

<class list>…class A…

3

manifest 기준으로

4

5.2 Explicit Method : Call Class

Page 68: 안드로이드 세미나

68 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

5.3 Implicit Method : IntentFilter

Intent

예 )case 1)

Category; 전화가Action; 걸려왔다 .Data; 전화번호 정보

case 2)Category; 카메라가Action; 활성화 되었다 .

Components

intent 작성

Components

전화번호 저장하는 서비스

Components

전화를 수신 받는 서비스

Components

카메라를 preview 하는 서비스

Page 69: 안드로이드 세미나

69 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

intent filter 기준

- action

- data

- category

Components

intent 작성내용 : … to 무기명

1

intentTo 무기명

or action

or data

or category

2

5

해당 조건 성립

Components

Class Name A

5

해당 조건 성립

Components

Class Name B

해당 조건 성립

안함

Components

Class Name C

안드로이드 System

manifest 기준으로3

ActivityManager 를통해 패키지 메니져에서 해당 class 이름을 찾는다 .

action 필터

data 필터

category 필터

class list

action 필터

data 필터

category 필터

class list

action 필터

data 필터

category 필터

class A

4

컴포넌트를

찾는다 .

인텐트 필드 테스트

Page 70: 안드로이드 세미나

70 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

1) Component Name (explicit 인텐트이다 .)

Intent

Component Name

Action

Data

Category

Extra

Flag

Components

intent 작성

setCompenent()

setClass()

setClassName()

getComponent()

컴포넌트 이름 설정

컴포넌트 이름 얻기

5.4 Intent 구성하기

Page 71: 안드로이드 세미나

71 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

2) Action (implicit 인텐트이다 .)

Intent

Component Name

Action

Data

Category

Extra

Flag

Components

intent 작성

ACTION_CALL 타겟 컴포넌트

intent전달

;; Initiate a phone call.

단 데이터 항목도 추가로

작성해 주어야 한다 .

ACTION_EDIT;; 에디팅 가능한 컴포넌트

Activity

Page 72: 안드로이드 세미나

72 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Intent

Component Name

Action

Data

Category

Extra

Flag

Components

intent 작성

ACTION_MAIN 타겟 컴포넌트

intent전달

;; Task 의 초기 activity 로

(i/o 이 없다 )

Activity

ACTION_SYNC

;; 모바일 장치의 데이터와

서버상 데이터 동기 시

Page 73: 안드로이드 세미나

73 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

Intent

Component Name

Action

Data

Category

Extra

Flag

Components

intent 작성

타겟 컴포넌트

intent전달

broadcast receiver

ACTION_BATTERY_LOW

;; 베터리 부족 시 경고

Page 74: 안드로이드 세미나

74 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명

ACTION_AIRPLANE_MODE_CHANGED

ACTION_ALL_APPS

Activity ACTION_ANSWER

Activity ACTION_ATTACH_DATA

Broadcast ACTION_BATTERY_CHANGED

ACTION_BATTERY_LOW

Broadcast ACTION_BOOT_COMPLETED

ACTION_BUG_REPORT

Activity ACTION_CALL

ACTION_CALL_BUTTON

ACTION_CAMERA_BUTTON

Activity ACTION_CHOOSER

ACTION_CLOSE_SYSTEM_DIALOGS

ACTION_CONFIGURATION_CHANGED

ACTION_CREATE_SHORTCUT

Page 75: 안드로이드 세미나

75 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명

ACTION_DATE_CHANGED

ACTION_DEFAULT

Activity ACTION_DELETE

ACTION_DEVICE_STORAGE_LOW

ACTION_DEVICE_STORAGE_OK

Activity ACTION_DIAL

Activity ACTION_EDIT

Activity ACTION_FACTORY_TEST

Activity ACTION_GET_CONTENT

ACTION_GTALK_SERVICE_CONNECTED

ACTION_GTALK_SERVICE_DISCONNECTED

ACTION_HEADSET_PLUG

ACTION_INPUT_METHOD_CHANGED

Activity ACTION_INSERT

ACTION_INSERT_OR_EDIT

Page 76: 안드로이드 세미나

76 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명Activity ACTION_MAIN Task 에서 최초 Activity 활성화 하는 경우

ACTION_MANAGE_PACKAGE_STORAGE

ACTION_MEDIA_BAD_REMOVAL

ACTION_MEDIA_BUTTON

ACTION_MEDIA_CHECKING

ACTION_MEDIA_EJECT

ACTION_MEDIA_MOUNTED

ACTION_MEDIA_NOFS

ACTION_MEDIA_REMOVED

ACTION_MEDIA_SCANNER_FINISHED

ACTION_MEDIA_SCANNER_SCAN_FILE

ACTION_MEDIA_SCANNER_STARTED

ACTION_MEDIA_SHARED

ACTION_MEDIA_UNMOUNTABLE

ACTION_MEDIA_UNMOUNTED

Page 77: 안드로이드 세미나

77 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명

ACTION_NEW_OUTGOING_CALL

Broadcast ACTION_PACKAGE_ADDED

Broadcast ACTION_PACKAGE_CHANGED

Broadcast ACTION_PACKAGE_DATA_CLEARED

ACTION_PACKAGE_INSTALL

Broadcast ACTION_PACKAGE_REMOVED

ACTION_PACKAGE_REPLACED

Broadcast ACTION_PACKAGE_RESTARTED

Activity ACTION_PICK

Activity ACTION_PICK_ACTIVITY

ACTION_PROVIDER_CHANGED

ACTION_REBOOT

Activity ACTION_RUN

ACTION_SCREEN_OFF

ACTION_SCREEN_ON

Page 78: 안드로이드 세미나

78 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명Activity ACTION_SEARCH

ACTION_SEARCH_LONG_PRESS

Activity ACTION_SEND

Activity ACTION_SENDTO

ACTION_SET_WALLPAPER

Activity ACTION_SYNC

ACTION_SYSTEM_TUTORIAL

Broadcast ACTION_TIMEZONE_CHANGED

Broadcast ACTION_TIME_CHANGED

Broadcast ACTION_TIME_TICK

Broadcast ACTION_UID_REMOVED

ACTION_UMS_CONNECTED

ACTION_UMS_DISCONNECTED

ACTION_USER_PRESENT

Activity ACTION_VIEW

Page 79: 안드로이드 세미나

79 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

대상 상수 값 (string) 설 명

ACTION_VOICE_COMMAND

ACTION_WALLPAPER_CHANGED

Activity ACTION_WEB_SEARCH

Page 80: 안드로이드 세미나

80 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

3) Category (implicit 인텐트이다 .)

Intent

Component Name

Action

Data

Category

Extra

Flag

Components

intent 작성

타겟 컴포넌트

intent전달

Activity

CATEGORY_LAUNCHER

;; LaunCher 가 되는

것들을 동작 시켜라 .

CATEGORY_DEFAULT (implicit intents 는 무조건 DEFAULT 가 포함된다 .)

; 자신이 두 개의 카타고리를 만족해야 할 때 DEFAULT 는 무엇이든 상관 없다 .

Page 81: 안드로이드 세미나

81 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

CATEGORY_ALTERNATIVE

CATEGORY_BROWSABLE

CATEGORY_DEFAULT

CATEGORY_DEVELOPMENT_PREFERENCE

CATEGORY_EMBED

CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST

CATEGORY_HOME

CATEGORY_INFO

CATEGORY_LAUNCHER

CATEGORY_MONKEY

CATEGORY_OPENABLE

CATEGORY_PREFERENCE

CATEGORY_SAMPLE_CODE

CATEGORY_SELECTED_ALTERNATIVE

CATEGORY_TAB

Page 82: 안드로이드 세미나

82 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

CATEGORY_TEST

CATEGORY_UNIT_TEST

Page 83: 안드로이드 세미나

83 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

URI 예 ) http://groups.google.com/group/clickin-2-da-beaat/files

setData(URI)

setType(MIME)

setDataAndType(URI 와 MIME)

MIME 예 ) text/html, image/jpeg ( … / … )

4) Data (독자적으로 어떤 컴포넌트를 활성화 할 수는 없다 .)

Page 84: 안드로이드 세미나

84 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

intent 매칭을 위해 사용하지 않는다 .

단지 동작된 컴포넌트에게 기타 정보를 전달하기 위한 항목이다 .

putExtras(); / getExtras();

Flag 예 : FLAG_ACTIVITY_NEW_TASK 기존 Task 에 Activity 가 추가 되지 않고

새로운 Task 를 생성한 후 추가 된다 .

5) Extra / Flag (독자적으로 어떤 컴포넌트를 활성화 할 수는 없다 .)

Page 85: 안드로이드 세미나

85 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

EXTRA_ALARM_COUNT

EXTRA_BCC

EXTRA_CC

EXTRA_DATA_REMOVED

EXTRA_DONT_KILL_APP

EXTRA_EMAIL

EXTRA_INTENT

EXTRA_KEY_EVENT

EXTRA_PHONE_NUMBER

EXTRA_REPLACING

EXTRA_SHORTCUT_ICON

EXTRA_SHORTCUT_ICON_RESOURCE

EXTRA_SHORTCUT_INTENT

EXTRA_SHORTCUT_NAME

EXTRA_STREAM

Page 86: 안드로이드 세미나

86 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

EXTRA_SUBJECT

EXTRA_TEMPLATE

EXTRA_TEXT

EXTRA_TITLE

EXTRA_UID

Page 87: 안드로이드 세미나

87 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

FLAG_ACTIVITY_BROUGHT_TO_FRONT

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_HISTORY

FLAG_ACTIVITY_NO_USER_ACTION

FLAG_ACTIVITY_PREVIOUS_IS_TOP

FLAG_ACTIVITY_REORDER_TO_FRONT

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

FLAG_ACTIVITY_SINGLE_TOP

FLAG_DEBUG_LOG_RESOLUTION

Page 88: 안드로이드 세미나

88 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 안드로이드의 기본 구조

상수 값 (string) 설 명

FLAG_FROM_BACKGROUND

FLAG_GRANT_READ_URI_PERMISSION

FLAG_GRANT_WRITE_URI_PERMISSION

FLAG_RECEIVER_REGISTERED_ONLY

Page 89: 안드로이드 세미나

89 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

Intents 항목 Object측 Filter 측Action 설정치 않음 MAIN

Category LAUNCHER LAUNCHER

호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN 설정치 않음

Category LAUNCHER LAUNCHER

호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action 설정치 않음 설정치 않음

Category LAUNCHER LAUNCHER

호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category 설정치 않음 설정치 않음호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category LAUNCHER LAUNCHER

호출 여부 전달 가능

위의 경우와 같이 intents 작성 측과 수신 측 모두 Action 항목을 설정하지 않으면 해당

컴포넌트를 활성화 할 수 없다 . 또한 모두 intents 가 모두 존재한다고 해도 category 를 설정하지

않으면 해당 컴포넌트를 활성화 할 수 없다 .

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category 설정치 않음 DEFAULT

호출 여부 전달 가능

4 안드로이드의 기본 구조

5.5 인텐트 항목간 연관 관계 : Action 설정 관련

Page 90: 안드로이드 세미나

90 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category 설정치 않음 DEFAULT

호출 여부 전달 가능

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category 사용자정의 A 사용자정의 A

호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category BROWSABLE BROWSABLE

호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category설정하지 않음 DEFAULT

사용자정의 A 사용자정의 A

호출 여부 전달 가능

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category 설정치 않음 설정치 않음호출 여부 전달 불가

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category설정하지 않음 DEFAULT

BROWSABLE BROWSABLE

호출 여부 전달 가능

Object측에서 Category 를 설정하지 않으면 자동으로 DEFAULT 가 설정 된다 .

또한 Category 에서 LAUNCHER 를 제외한 category 를 넣을 경우 Filter측에서 꼭

DEFAULT 를 넣어 두어야 한다 .

4 안드로이드의 기본 구조

5.6 인텐트 항목간 연관 관계 : Category 설정 관련

Page 91: 안드로이드 세미나

91 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

Intents 항목 Object측 Filter 측Action MAIN MAIN

Category LAUNCHER LAUNCHER

호출 여부 전달 가능

4 안드로이드의 기본 구조

Page 92: 안드로이드 세미나

92 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4

6. AndroidManifest.xml

안드로이드의 기본 구조

Page 93: 안드로이드 세미나

93 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.1 manifest

속 성 설 명

xmls:android 안드로이드의 namespace 이다 .

package 어플리케이션을 위한 자바 Full 패키지 명

sharedUserId 자신의 프로세스와 공유될 리눅스 UserID

sharedUserLabel 자신의 프로세스와 공유될 리눅스 UserID Name

versionCode version Code

versionName version Name

manifest 의 단어적인 뜻 : 적하 목록

가장 최상위 요소 (element) 이다 .

꼭 하위 요소로 <Application> 을 포함하고 있어야 한다 .

Page 94: 안드로이드 세미나

94 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.2 User-Permission ( Contained IN : manifast )

속 성 설 명

name 이 Permission 의 이름이다 .

Permission 은 두 가지 용도로 사용된다 .

첫째 : 사용자에게 어플리케이션이 최초 설치될 때 설치되는 시스템 내에 어떤 서비스를 이용하는

APP 인지 간략히 경고 문구로 보여 주고 설치 여부를 결정하도록 하는 용도

둘째 : 시스템 내에 어떤 서비스를 사용할 수 있는 권한을 부여한다 .

만일 해당 permission 을 기술하지 않으면 시스템 내에 사용하려는 서비스를 사용할 수 없다 .

Page 95: 안드로이드 세미나

95 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

6.2.1 Permission 사용 예

Page 96: 안드로이드 세미나

96 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

6.2.2 Permission 의 종류

상수 값 (string) 설 명

ACCESS_CHECKIN_PROPERTIES DB 안에 tabel 속성 ,값을 r/w 하기 위해서 필수

ACCESS_COARSE_LOCATION

ACCESS_FINE_LOCATION GPS 등의 정교한 위치 정보 제공자 사용시 필수

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_MOCK_LOCATION

ACCESS_NETWORK_STATE 네트워크 관련 정보 접근 시 필수

ACCESS_SURFACE_FLINGER 아랫단에 SufaceFlinger 사용 시 필수

ACCESS_WIFI_STATE WIFI 네트워크 관련 정보 접근 시 필수

ADD_SYSTEM_SERVICE

BATTERY_STATS

BIND_APPWIDGET

BIND_INPUT_METHOD IME 서비스 (입력기 ) 개발 시 필수

BLUETOOTH 한 쌍의 블루투스 디바이스를 연결하기 위해서 필수

BLUETOOTH_ADMIN 외부의 블루투스 디바이스 장치 탐색을 위해서 필수

BRICK 장치를 비활성화 시키기 위하여 필수

아래에 사항은 필수 숙지 사항이다 . 어떤 기능 구현 시 발생하는 많은 문제는 Permission 으로

인하여 야기되기도 하기 때문이다 .

Page 97: 안드로이드 세미나

97 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

BROADCAST_PACKAGE_REMOVED

BROADCAST_SMS

BROADCAST_STICKY

BROADCAST_WAP_PUSH

CALL_PHONE

CALL_PRIVILEGED

CAMERA 카메라 디바이스 접근 시 필수

CHANGE_COMPONENT_ENABLED_STATE

CHANGE_CONFIGURATION

CHANGE_NETWORK_STATE

CHANGE_WIFI_STATE

CLEAR_APP_CACHE

CLEAR_APP_USER_DATA

CLEAR_APP_USER_DATA

CONTROL_LOCATION_UPDATES

Page 98: 안드로이드 세미나

98 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

DELETE_CACHE_FILES

DELETE_PACKAGES 설치된 패키지를 삭제할 때 필수

DEVICE_POWER

DIAGNOSTIC

DISABLE_KEYGUARD

DUMP

EXPAND_STATUS_BAR

FACTORY_TEST

FLASHLIGHT Flashlight 를 사용하기 위해서 필수 (카메라플래시 )

FORCE_BACK

FOTA_UPDATE

GET_ACCOUNTS

GET_PACKAGE_SIZE

GET_TASKS

HARDWARE_TEST

Page 99: 안드로이드 세미나

99 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

INJECT_EVENTS

INSTALL_PACKAGES 특정 패키지를 설치 하기 위해서는 필수

INTERNAL_SYSTEM_WINDOW

INTERNET 인터넷 사용 유무 (네트워크 소켓 사용시 필수 )

MANAGE_APP_TOKENS

MASTER_CLEAR

MODIFY_AUDIO_SETTINGS

MODIFY_PHONE_STATE

MOUNT_FORMAT_FILESYSTEMS

MOUNT_UNMOUNT_FILESYSTEMSFile System 에서 특정 storage 영역을 mounting / unmounting 하기 위해서 필수

PERSISTENT_ACTIVITY 항상 실행된 상태를 유지하는 Activity 사용시 필수

PROCESS_OUTGOING_CALLS

READ_CALENDAR 사용자 Calendar 데이터를 읽기 위해서 필수

READ_CONTACTS 사용자 연락처 데이터 접근 시 필수 ( 예 :주소록 )

READ_FRAME_BUFFER스크린의 Frame buffer 를 일기 위해서는 필수( 예 : 스크린 캡쳐 기능 패키지 )

Page 100: 안드로이드 세미나

100 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

READ_INPUT_STATE

READ_LOGS

READ_OWNER_DATA

READ_PHONE_STATE

READ_SMS

READ_SYNC_SETTINGS

READ_SYNC_STATS

REBOOT

RECEIVE_BOOT_COMPLETED시스템 부팅이 완료되는 시점에 발생되는 BroadcastACTION_BOOT_COMPLETED 메시지를 받기위해서는 필수 ( 부팅 시 실행되는 APP 에 사용 )

RECEIVE_MMS MMS 수신 메시지 모니터링 , 기록 , 처리시 필수

RECEIVE_SMS SMS 수신 메시지 모니터링 , 기록 , 처리시 필수

RECEIVE_WAP_PUSH

RECORD_AUDIO

REORDER_TASKS Task 스택의 순서를 변경할 때 필수

RESTART_PACKAGES

Page 101: 안드로이드 세미나

101 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

SEND_SMS SMS 발신을 위해서는 필수

SET_ACTIVITY_WATCHER

SET_ALWAYS_FINISH

SET_ANIMATION_SCALE

SET_DEBUG_APP

SET_ORIENTATION

SET_PREFERRED_APPLICATIONS

SET_PROCESS_FOREGROUND

SET_PROCESS_LIMIT실행될 수 있는 APP 프로세스 최대 개수를 설정 하기 위해서 필수

SET_TIME_ZONE

SET_WALLPAPER바탕화면 (Home 화면 ) 설정을 하기 위하여 필수( 예 : 바탕화면 이미지 변경 )

SET_WALLPAPER_HINTS

SIGNAL_PERSISTENT_PROCESSES

STATUS_BAR

SUBSCRIBED_FEEDS_READ

Page 102: 안드로이드 세미나

102 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

상수 값 (string) 설 명

SUBSCRIBED_FEEDS_WRITE

SYSTEM_ALERT_WINDOW

UPDATE_DEVICE_STATS

VIBRATE 진동기의 접근 시 필수

WAKE_LOCK

WRITE_APN_SETTINGS

WRITE_CALENDAR

WRITE_CONTACTS 사용자 연락처 작성시 필수 (read 는 안됨 )

WRITE_GSERVICES

WRITE_OWNER_DATA

WRITE_SECURE_SETTINGS

WRITE_SETTINGS

WRITE_SMS SMS 메시지 작성시 필수

WRITE_SYNC_SETTINGS

Page 103: 안드로이드 세미나

103 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

6.2.3 시스템에서 지원하는 Permission 리스트 보기

사용자 정의 Permission

@ 다음 장에서 설명

Page 104: 안드로이드 세미나

104 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.3 Permission ( Contained IN : manifast )

속 성 설 명

description Label 에 대한 상세 설명

icon 단지 permission 을 묘사하는 아이콘이다 .

label permission 에 대한 설명

name 사용자 정의 Permission 명

permissionGroup Permission 그룹

protectionLevel 보안 수위

사용자 정의 Permission 에 해당한다 . 사용자가 원하는 Permission 을 정의 할 수 있는데

사용자가 정의한 Permission 관련 Activity, Service, Content Provider 의 경우 외부

어플리케이션에서 접근할 때는 꼭 user-permission 이 필요하다 .

Page 105: 안드로이드 세미나

105 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

6.3.1 Permission Name

Page 106: 안드로이드 세미나

106 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

6.3.2 Permission Label 과 Permission Group

Page 107: 안드로이드 세미나

107 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4 Application Components

Protection 설 명

normal “인스톨 시점에 설치하겠냐 ?” 는 내용을 묻지 않는다 .

dangerous “인스톨 시점에 설치하겠냐 ?” 는 내용을 꼭 물어본다 .

signature ???

Signature Or System ???

6.3.3 Permission ProtectionLevel

Page 108: 안드로이드 세미나

108 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.4 Permission-group ( Contained IN : manifast )

속 성 설 명

description Label 에 대한 상세 설명

icon 단지 permission-group 를 묘사하는 아이콘이다 .

label permission-group 설명

name Permission 그룹 명

Permission 그룹을 설정한다 .

Page 109: 안드로이드 세미나

109 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.4.1 사용자 Permission 접근 제한 범위

타 APP 에서 접근 제한 범위

Page 110: 안드로이드 세미나

110 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.5 Permission-tree ( Contained IN : manifast )

속 성 설 명

icon 단지 permission-tree 를 묘사하는 아이콘이다 .

label ???

name ???

뭘 하는 걸까 ?

Page 111: 안드로이드 세미나

111 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.6 instrumentation ( Contained IN : manifast )

속 성 설 명

functionalTest 스트레스 테스트 / 기능테스트 / 로딩 시간 테스트

handleProfiling ??

icon 단지 instrumentation 을 묘사하는 아이콘이다 .

label 단지 instrumentation 을 묘사하는 label 이다 .

name ??

tragetPackage 테스트 대상의 패키지 명

안드로이드 어플리케이션 테스트 프레임워크를 정의한다 .

Page 112: 안드로이드 세미나

112 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.7 uses-sdk ( Contained IN : manifast )

속 성 설 명

minSdkVersion SDK 버젼

상위 버전에서 하위 버전의 팩키지를 설치하는 경우를 방지 하는 용도로 사용 된다 .

Page 113: 안드로이드 세미나

113 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.8 application ( Contained IN : manifast )

안드로이드 어플리케이션의 속성을 정의한다 .

Page 114: 안드로이드 세미나

114 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

속 성 설 명

allowClearUserData 사용자 데이터 삭제 가능 유무

allowTaskReparenting ??

debuggable 타겟 보드에서 디버깅을 하려면 꼭 True 로 설정하여야 한다 .

description ??

enabled 이 값이 “ false” 이면 절대 실행될 수 없는 application 이 된다 .

hasCode 프로그램 코드 존재 유무

icon프로그램의 아이콘 이미지를 설정한다 .Activity 나 혹은 다른 곳에 설정이 안되었을 경우에 적용되는 값이다 .

label 프로그램 명에 해당한다 . 디폴트 값이다 .

manageSpaceActivity ??

name ??

permission 앞장에서 사용자 Permission 항목과 연관 ( 앞장 참조 )

persistent 항상 실행된 상태를 유지할 것인가에 대한 유무

process APP 실행 시 Process 명을 변경할 수 있다 .

taskAffinity Task 그룹에 대한 정의 (친밀한 타스크의 그룹 )

theme ??

Page 115: 안드로이드 세미나

115 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4

taskAffinity 와 allowTaskReparenting

; taskAffinity : 친화력

; allowTaskReparenting : 자신의 타스크를 변경 가능토록 한다 .

Component android.task.task1

<application android:icon="@drawable/icon" android:label="@string/app_name" android:allowTaskReparenting="true" android:taskAffinity="android.task.sample1" >

allowTaskReparenting = TruetaskAffinity = android.task.task2

Component android.task.task2

없음

activite1 activite2 activite2activite1

안드로이드의 기본 구조

Page 116: 안드로이드 세미나

116 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

4

Component : android.task.task1

allowTaskReparenting = TruetaskAffinity = android.task.task1

Component : android.task.task2

없음

activite1 activite2HomeHome activite1 activite2

task1 task2

activite1 activite2Home

결과 : task2

실행 실행

task1 과 task2 가 결합 되었다 .

안드로이드의 기본 구조

Page 117: 안드로이드 세미나

117 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.9 uses-configuration ( Contained IN : manifast )

속 성 설 명

reqFiveWayNav ??

reqHardKeyboard ??

reqKeyboardType ??

reqNavigation ??

reqTouchScreen ??

Page 118: 안드로이드 세미나

118 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.10 activity ( Contained IN : manifast / application )

Activity 에 대한 속성을 정의 한다 .

Page 119: 안드로이드 세미나

119 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

속 성 설 명

allowTaskReparenting

alwaysRetainTaskState 타스크 시간이 경과되어도 남아 있다 .

clearTaskOnLaunch타스크 전환 시 모두 클리어( 단 타스크 안에 최초 Activity 에 설정해야함 )

configChangeskeyboardHidden : UI 회전 방지APP 가 변경하는 시스템 config

enabled 이 값이 “ false” 이면 절대 활성화 될 수 없는 Activity 가 된다 .

excludeFromRecents 최근 실행 어플리케이션 목록에 등록 유무

exported 타 어플리케이션에서 구동 가능 유무

finishOnTaskLaunch타스크가 재 시작 될 때 종료되도록 한다 .Activity 종료 시 단말 종료 유무

icon 프로그램의 아이콘 이미지를 설정한다 .

label 프로그램명에 해당한다 .

launchMode [multiple|singleTop|singleTask|]

multiprocess [true:false] 프로세스가 쪼개지는 것을 지원한다 .

Page 120: 안드로이드 세미나

120 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

속 성 설 명

name Activity 의 class 명에 해당한다 . (Java 파일명에도 해당한다 .)

noHistory

permission 앞장에서 permission 관계 설명 참조

process 쪼개진 프로세스명

screenOrientation

stateNotNeeded

taskAffinity

theme

windowSoftInputMode

Page 121: 안드로이드 세미나

121 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Home

Components A

Activity

Components B

Activity

Components C

Activity

Task 1

6.10.1 clearTaskOnLaunch 옵션

Home

Key

Home

Components A

Activity 실행

Components A

Activity 실행

clearTaskOnLaunch 를 False 로 설정한 경우 ( 일반적인 상황 )

Page 122: 안드로이드 세미나

122 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Home

Components A

ActivityclearTaskOnLaunch

Components B

Activity

Components C

Activity

Task 1 Home

Key

Home

Components A

Activity 실행

Components A

Activity 실행

clearTaskOnLaunch 를 True 로 설정한 경우

Task 1

Task 전환 시 ClearTaskOnLaunch 로 인하여 Task1 Clear

Components A

ActivityclearTaskOnLaunch

Task 1

Page 123: 안드로이드 세미나

123 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Task

Home

Components A

ActivityStandard Task

Components B

Activity

Components C

ActivityTop

(Standard Task)

Standard Task

Task 1

6.10.2 launchMode 옵션

Page 124: 안드로이드 세미나

124 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Home

Components A

Activity

Components B

Activity

Top 에 하위와 동일한 Activity 허용 안함

Standard Task

Task (SingleTop Task)

Components B

ActivityTop

Single Top TaskStandard Task

Task 1

재 사용

Page 125: 안드로이드 세미나

125 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Home

Components A

Activity

Task 1

Components B

Activity

Components C

ActivityTop

SingleTask Task

Home

Components C

Activity

SingleTask TaskStandard TaskStandard Task

SingleTask Task

Components D

ActivityStandard Task

Task 2

Task (SingleTask Task)

이것은 꼭 Task 의 root 에서 activity 가 활성화 된다 .

Page 126: 안드로이드 세미나

126 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 Application Components

Home

Components A

Activity

Task 1

Components B

Activity

Components C

ActivityTop

Single Instance Task

Home

Components C

Activity

Standard Task Standard Task

Components D

ActivityTop

Task 2

Task (SingleInstance Task)

SingleInstance Task

SingleInstance Task

Standard Task

하위 새로운 타스크로 생성된다 .

이것은 꼭 Task 의 root 에서 activity 가 활성화 된다 .

Page 127: 안드로이드 세미나

127 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.11 activity-alias ( Contained IN : manifast / application )

속 성 설 명

enabled 이 값이 “ false” 이면 절대 활성화 될 수 없는 activity 가 된다 .

exported ??

icon 프로그램의 아이콘 이미지를 설정한다 .

label 프로그램 명에 해당한다 .

name ??

permission 앞장에서 permission 관계 설명 참조

targetActivity` ??

Page 128: 안드로이드 세미나

128 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.12 service ( Contained IN : manifast / application )

속 성 설 명

enabled 이 값이 “ false” 이면 절대 활성화 될 수 없는 service 가 된다 .

exported ??

icon 프로그램의 아이콘 이미지를 설정한다 .

label 프로그램 명에 해당한다 .

name Service 의 class 명에 해당한다 . (Java 파일명에도 해당한다 .)

permission 앞장에서 permission 관계 설명 참조

process ??

Page 129: 안드로이드 세미나

129 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.13 receiver ( Contained IN : manifast / application )

속 성 설 명

enabled 이 값이 “ false” 이면 절대 활성화 될 수 없는 receiver 가 된다 .

exported ??

icon 프로그램의 아이콘 이미지를 설정한다 .

label 프로그램 명에 해당한다 .

name Receiver 의 class 명에 해당한다 . (Java 파일명에도 해당한다 .)

permission 앞장에서 permission 관계 설명 참조

process` ??

Page 130: 안드로이드 세미나

130 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.14 provider ( Contained IN : manifast / application )

Page 131: 안드로이드 세미나

131 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

속 성 설 명

authorities ??

enabled 이 값이 “ false” 이면 절대 활성화 될 수 없는 provider 가 된다 .

exported ??

grantUriPermissions ??

icon 프로그램의 아이콘 이미지를 설정한다 .

initOrder ??

label 프로그램 명에 해당한다 .

multiprocess ??

name Provider 의 class 명에 해당한다 . (Java 파일명에도 해당한다 .)

permission 앞장에서 permission 관계 설명 참조

process ??

readPermission ??

syncable ??

writePermission ??

Page 132: 안드로이드 세미나

132 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.15 uses-library ( Contained IN : manifast / application )

속 성 설 명

name ??

Page 133: 안드로이드 세미나

133 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.16 grant-uri-permission ( Contained IN : manifast / application / provider )

속 성 설 명

path ??

pathPattern ??

pathPrefix ??

Page 134: 안드로이드 세미나

134 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.17 meta-data ( Contained IN : manifast / application / activity,activity-alias,service,receiver )

속 성 설 명

name 정보 명

resource 해당 정보의 리소스 명

value 해당 정보의 값

중요한 요소는 아니다 . 특정 사용자 정보를 기입할 수 있으면

name 과 resource 혹은 name 과 value 와 같이 짝으로 입력할 수 있다 .

예 ) name = “android.appwidget.provider” , resource = “@xml/analog_appwidget”

안드로이드 위젯 provider 이며 , 리소스 analog_appwidget 리소스를 참조한다 .

Page 135: 안드로이드 세미나

135 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.18 intent-filter ( Contained IN : manifast / application / activity,activity-alias,service,receiver )

속 성 설 명

icon 단지 상위 activity,service,receiver 를 묘사하는 아이콘이다 .

label 단지 상위 activity,service,receiver 를 묘사하는 label 이다 .

priority ??

intent 의 Filter 내용을 기입한다 . ( 자세한 사항은 앞장에서 개념 설정 부분 참조 )

Page 136: 안드로이드 세미나

136 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.19 action ( Contained IN : manifast / application / activity,activity-alias,service,receiver )

속 성 설 명

name ??

Page 137: 안드로이드 세미나

137 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.20 category ( Contained IN : manifast / application / activity,activity-alias,service,receiver / intent-filter )

속 성 설 명

name ??

Page 138: 안드로이드 세미나

138 박 성 근 (010-9985-2539) 무단 복제를 금합니다 .(^^;)

5 AndroidManifest.xml

6.21 data ( Contained IN : manifast / application / activity,activity-alias,service,receiver / intent-filter )

속 성 설 명

host ??

mimeType ??

path ??

pathPattern

pathPrefix

port

scheme