[AndroidManifest.xml] uses-permission과 uses-feature의 관계

android 2013. 3. 6. 16:55

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

작성일 : 2013-03-06

작성자 : hanburn

 

안드로이드는 단말기가 다양해도 너무~ 다양해서 개발 환경에서 잘되다가 market에 올리면 안된다는 피드백이 자주 있다. 그중에 하나가 설치 issue 이다. 설치 문제는 문제가 발생하는 단말을 확보해서 테스트 해보면 좋을텐데 대부분이 단말을 구할수 없는 상태에서 확인을 해야 하기에 종종 탐정놀이에 빠지게 된다.

 

오늘도 이런 탐정놀이를 하다가 users-permission uses-feature에 대해서 정리해 본다.

 

1. uses-permission 이란?

(Application)이 실행될때가 아니라 설치되는 시점에 사용자에게 허가를 받는 권한을 기술하는 것이다. "android.permission.CAMERA" 은 카메라를 사용한다는 권한을 표시한다.

Permission의 종류는 아래 page를 참고 하면 된다.

http://developer.android.com/reference/android/Manifest.permission.html

 

2. uses-feature ?

syntax:

<uses-feature 
  android:name="string
  android:required=["true" | "false"] 
  android:glEsVersion="integer" />

 

(application)이 사용하는 하드웨어 또는 소프트웨어 특성(feature)를 정의 한다. 요즘 카메라는 대부분 달려있는데, 보급형 같은 경우는 카메라의 자동 초점기능이 없는 단말기도 존재한다.

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

위에처럼 required=false로 하면 카메라에 자동초점 기능이 없더라도 앱을 실행 할 수 있게 된다.

 

3. uses-permissionuses-feature의 관계

앞에서 언급한 것처럼 permission을 요구하고 있는데, feature에서 require=false를 정의하지 않으면 해당 feature가 없는 단말에서는 앱을 실행할 수가 없게 된다. CAMERA permission은 물리적인 CAMEAR가 있을 때만 사용가능하기 때문에 하드웨어에 관계된 몇몇 permission에 대해서는 필요로하는 feature가 포함된다. 

이러한 관계에 대해서 아래에 정리되어 있으니 permission을 추가할 때, feature도 같이 신경써서 정의해야 한다.

 

 

Category

This Permission...

Implies This Feature Requirement

Bluetooth

BLUETOOTH

android.hardware.bluetooth

(See Special handling for Bluetooth feature for details.)

BLUETOOTH_ADMIN

android.hardware.bluetooth

Camera

CAMERA

android.hardware.camera and 
android.hardware.camera.autofocus

Location

ACCESS_MOCK_LOCATION

android.hardware.location

ACCESS_LOCATION_EXTRA_COMMANDS

android.hardware.location

INSTALL_LOCATION_PROVIDER

android.hardware.location

ACCESS_COARSE_LOCATION

android.hardware.location.network and 
android.hardware.location

ACCESS_FINE_LOCATION

android.hardware.location.gps and 
android.hardware.location

Microphone

RECORD_AUDIO

android.hardware.microphone

Telephony

CALL_PHONE

android.hardware.telephony

CALL_PRIVILEGED

android.hardware.telephony

MODIFY_PHONE_STATE

android.hardware.telephony

PROCESS_OUTGOING_CALLS

android.hardware.telephony

READ_SMS

android.hardware.telephony

RECEIVE_SMS

android.hardware.telephony

RECEIVE_MMS

android.hardware.telephony

RECEIVE_WAP_PUSH

android.hardware.telephony

SEND_SMS

android.hardware.telephony

WRITE_APN_SETTINGS

android.hardware.telephony

WRITE_SMS

android.hardware.telephony

Wifi

ACCESS_WIFI_STATE

android.hardware.wifi

CHANGE_WIFI_STATE

android.hardware.wifi

CHANGE_WIFI_MULTICAST_STATE

android.hardware.wifi

 참고 : http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features



: