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 |