레이블이 AndroidManifest인 게시물을 표시합니다. 모든 게시물 표시
레이블이 AndroidManifest인 게시물을 표시합니다. 모든 게시물 표시

2017년 9월 29일 금요일

'uses-permission'의 사용법 - Android Manifest

Android Manifest 파일에서 사용되는 '<uses-permission>'는 응용프로그램이 올바르게 작동하기 위한 응용프로그램에 부여해야하는 권한을 정의할때 사용됩니다. 권한은 애플리케이션이 설치될때 (Android 5.1 이하를 실행하는 기기에서) 또는 앱이 실행되는 동안 (Android 6.0 이상을 실행하는 기기에서) 부여됩니다.

'<uses-permission>'의 기본 형식은 아래와 같습니다.

<uses-permission android:name="string"
        android:maxSdkVersion="integer" />

'android:name'은 허용이 필요한 권한에 대한 이름을 나타냅니다. '<permission>' 요소로 정의된 권한, 다른 응용프로그램에서 정의한 권한 또는 "android.permission.CAMERA" 또는 "android.permission.READ_CONTACTS"와 같은 표준 시스템 권한중 하나일 수 있습니다. 아래 예제에서 볼 수 있듯이 일반적으로 사용 권한 이름에는 패키지 이름이 접두사로 포함됩니다.

'android:maxSdkVersion'는 권한을 부여해야 하는 가장 높은 API 수준입니다. 이 속성을 설정하면 앱에 필요한 권한이 특정 API 레벨이상에서 더이상 필요하지 않은 경우에 사용합니다. 아래 예제의 경우에 Android 4.4 (API 레벨 19)부터 앱이 외부 저장소 (getExternalFilesDir ()에서 제공하는 디렉토리)의 애플리케이션별 디렉토리에 쓰기를 원할 때 앱이 WRITE_EXTERNAL_STORAGE 권한을 요청할 필요가 없습니다. 그러나 API 레벨 18 이하에서는 권한이 필요합니다. 따라서 다음과 같은 선언을 사용하여 API 레벨 18까지만이 권한이 필요하다고 선언할 수 있습니다.

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />

이렇게 하면 API 레벨 19부터 시스템에서 더이상 앱에 WRITE_EXTERNAL_STORAGE 권한을 부여하지 않습니다.

이 속성은 API 레벨 19에 추가되었습니다.

2017년 9월 28일 목요일

AndroidManifest.xml 파일 개요

모든 애플리케이션에는 루트 디렉터리에 AndroidManifest.xml 파일이 있어야 하는데, Android Studio에서 기본 앱 프로젝트를 생성하면 'app/manifests' 폴더내에 위치합니다.

AndroidManifest.xml 파일에서는 Android 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공합니다.

■ 애플리케이션에 대한 Java 패키지의 이름을 지정하는데, 애플리케이션에 대한 고유한 식별자 역할을 합니다.
■ 액티비티, 서비스, 브로드캐스트 수신기 및 콘텐츠 제공자 등 애플리케이션을 이루는 구성 요소를 설명합니다. 또한, 각 구성 요소를 구현하는 클래스의 이름을 지정하고 클래스가 처리할 수 있는 해당 기능(: Intent 메시지)을 게시합니다. 이러한 선언은 Android 시스템에 구성 요소와 구성 요소가 실행될 수 있는 조건을 알립니다.
■ 애플리케이션 구성 요소를 호스팅하는 프로세스를 결정합니다.
■ 애플리케이션이 API의 보호된 부분에 액세스하여 다른 애플리케이션과 상호 작용하는데 보유해야 하는 권한을 선언합니다. 또한, 다른 애플리케이션이 이 애플리케이션의 구성 요소와 상호작용하기 위해 보유해야 하는 권한도 선언합니다.
■ 애플리케이션이 실행중일때 프로파일링과 기타 정보를 제공하는 Instrumentation 클래스를 나열합니다. 이러한 선언은 애플리케이션이 개발중인 동안에만 매니페스트에 존재하고, 애플리케이션이 배포되기 전에 삭제됩니다.
■ 애플리케이션이 필요로 하는 Android API의 최소 레벨을 선언합니다.
■ 애플리케이션이 연결되어야 하는 라이브러리를 나열합니다.

매니페스트 파일의 기본 예는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration /> 
    <uses-feature /> 
    <supports-screens /> 
    <compatible-screens /> 
    <supports-gl-texture /> 

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>