summary

어플리케이션의 프로필 느낌

어플리케이션에 대한 전반적인 정보를 담고 있는 파일

안드로이드 시스템에서 어플리케이션의 정보를 알아내는데 사용

어플리케이션의 컴포넌트(액티비티, 서비스, 브로드캐스트, 컨텐츠 프로바이더)가 존재

어플리케이션의 이름, 사용하는 라이브러리 등 어플리케이션에 대한 모든 정보가 포함

어플리케이션의 퍼미션 지정


GUI 설정 메뉴는 크게 Manifest, Application, Permissions, Instrumentation으로 구성되어 있으며, AndroidManifest.xml 탭을 클릭하면 실제로 코드를 보면서 수정할 수 있게 되어있다.

 

<manifest> 태그

 

안드로이드 메니페스트 파일은 레이아웃 파일과 유사하게 <manifest> 태그가 전체를 감싸는 구조

manifest 태그의 안에 아래에서 다루게 될 application 태그, uses-permission 태그 등

 

manifest 태그의 속성으로는 여기에서 사용할 네임스페이스를 지정해주는 xmlns:android 속성, 어플리케이션의 패키지명 및 버전 등

 

1
2
3
4
5
6
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidhuman.HelloAndroid"
    android:versionCode="1"
    android:versionName="1.0">
    // 어플리케이션 태그 및 Permission 태그
</manifest>
cs

 

<application> 태그

 

메니페스트 파일에는 단 한 개의 어플리케이션 태그

이는 어플리케이션에 대한 정보 (어플리케이션 이름, 아이콘, 테마 등) 뿐 아니라 어플리케이션 내의 컴포넌트들에 대한 태그들을 포함

 

1
2
3
4
5
6
7
8
9
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
</application>
cs

 

1. <activity> 태그

 

어플리케이션 내의 각 액티비티 마다 이 activity 태그가 필요

activity 태그에는 액티비티의 이름, 클래스 이름 및 액티비티가 받을 수 있는 인텐트가 정의되어 있는 인텐트 필터를 포함

메니페스트 파일에 액티비티가 정의되어 있지 않다면 해당 액티비티를 실행시킬 수 없으므로 런타임 오류가 발생

메니페스트 파일에 액티비티를 정의

 

1
2
3
4
5
6
7
<activity android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
cs

 

2. <service> 태그

 

액티비티와 마찬가지로 서비스 또한 액티비티와 마찬가지로 각 서비스마다 서비스 태그를 정의해주어야 함

서비스를 실행할 수 있는 인텐트가 정의된 인텐트 필터를 포함

 

1
2
3
4
5
6
<service android:name=".app.RemoteService" android:process=":remote">
    <intent-filter>
        <action android:name="com.example.android.apis.app.IRemoteService" />
        <action android:name="com.example.android.apis.app.REMOTE_SERVICE" />
    </intent-filter>
</service>
cs


3. <provider> 태그

 

어플리케이션의 컨텐트 프로바이더 (Content Provider)를 등록하기 위해 사용

컨텐트 프로바이더는 어플리케이션 내의 데이터베이스를 다른 어플리케이션이 공유할 수 있도록 해주는 역할.

 

1
2
<provider android:name=".app.SearchSuggestionSampleProvider"
android:authorities="com.example.android.apis.SuggestionProvider" />
cs

 

4. <receiver> 태그

 

어플리케이션이 브로드캐스트 메시지 (시스템의 상태정보에 관련된 메시지 : 인텐트로 구성됨)를 수신할 수 있도록 합니다. <receiver> 태그 안에 인텐트 필터를 정의하여 어떠한 브로드캐스트 메시지에 반응할지를 지정합니다.

 

1
2
3
4
5
6
7
<receiver android:name=".appwidget.ExampleAppWidgetProvider">
<meta-data android:name="android.appwidget.provider"
    android:resource="@xml/appwidget_provider" />
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
</receiver>
cs


5. <uses-permission> 태그

 

어플리케이션에 시스템의 여러가지 정보들 (위치정보, SMS 수신, 전화 걸기, 주소록 읽기, 인터넷 사용 등...)을 사용하기 위해서는 그에 해당하는 권한이 필요

<uses-permission> 태그에는 이렇게 어플리케이션에서 필요한 권한들을 정의

 

1
2
3
4
5
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
cs


'Programming > Android' 카테고리의 다른 글

Thread (백그라운드에서 UI변경)  (0) 2016.09.03
Toolbar  (0) 2016.09.03
notification 고정시키기  (1) 2016.08.28
JSONobject 과 JSONarray  (0) 2016.08.27
AsyncTask  (0) 2016.08.26

+ Recent posts