Android Manifest.xml은 Android 앱의 "시작과 끝"이다.
Android Manifest를 잘 들여 다 보면, 이 앱이 어떤 하드웨어를 사용하고, 어떤 기능등을 제공하는지 대략적으로 알 수 있다.

AndroidManifest.xml을 볼때 가장 먼저 보는것이 android-permission 부분이다.

DeskClock에서 사용하고 있는 Permission List는 아래와 같다 

    <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <uses-permissionandroid:name="android.permission.WAKE_LOCK"/>

    <uses-permissionandroid:name="android.permission.VIBRATE"/>

    <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>

    <uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD"/>

    <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

    <uses-permissionandroid:name="android.permission.DEVICE_POWER"/>


해당 설정들은 http://developer.android.com/reference/android/Manifest.permission.html 에서 상세 정보를 볼수 있따.

특히한것만 한번 살펴 보면,

WRITE_SETTING - Android Device의 System Setting을 Read/Write할 수 있는 권한  
DISABLE_KEYGUARD - KEYGUARD를 Disable시키는 건데, KeyGuard란 화면 Lock됐을때의 화면이다.
READ_PHONE_STATE - Phone 번호 정보등 폰에 관련된 정보를 얻기 위한 권한 

Activity 들은 UI 단의 Activity 이기 때문에, 제처두고, 

등록되어 있는 Service, Provider, Receiver쪽을 잠깐 살펴보자..

<provider android:name="AlarmProvider" android:authorities="com.android.deskclock" />


이부분은 해당 App.을 "Content Provider"로 사용하겠다는 선언이다.
android:authorities는 Content Provider의 identification 이라고 생각하면 된다.
자세한 정보는 에서 http://developer.android.com/guide/topics/manifest/provider-element.html 확인할 수 있다.


 <receiver android:name="AlarmReceiver">

            <intent-filter>

               <action android:name="com.android.deskclock.ALARM_ALERT" />

               <action android:name="alarm_killed" />

               <action android:name="cancel_snooze" />

            </intent-filter>

 </receiver>

 <service android:name="AlarmKlaxon">

            <intent-filter>

                <action android:name="com.android.deskclock.ALARM_ALERT" />

            </intent-filter>

 </service>


위와 같이 service/receiver 선언 부분이 몇가지 있는데, 
service 는 Android에서 얘기하는 "BroadCast" 를 발생시키는 녀석이고,
receiver는 "BroadCast"를 받아서 처리 하는 녀석이다.

위의 코드를 보면, DeskClock에서는 Alram을 발생시키고, 그리고 자기가 직접 처리 할수 있게 설정되어 있다.
그외에도 몇가지 Receiver들이 선언 되어 있는데,
BOOTING/TIME_SET/TIMEZONE_CHANGED/등등의 BROADCAST를 처리 할 수 있게 
Receiver들이 선언 되어 있다. 

단순한 것이지만, service를 등록하여 alram을 broadcast하고, receiver를 등록하여 alram을 사용자에게 알려주는 기능을 한다는 것을 
AndroidManifest.XML을 보면서 파악할 수 있었다.

이 Manifest 설정을 보면서 소스 코드를 파악해보도록 하자.


+ Recent posts