목차
1. 안드로이드 퍼미션 (Permission)
2. Permission 사용하기
A. permission 사용하기
B. Permission 정의하기
3. Component permissions
B. Activity Permissions
C. Service Permissions
D. BroadcastReceiver permissions
E. ContentProvider Permissions
4. 시리즈 연재
1. 안드로이드 퍼미션 (Permission)
플랫폼은 악의적인 앱으로 부터 유저를 보호하는 장치가 필요하다. 그렇지 않으면 무분별하게 네트워크 패킷을 사용하거나 사용자 몰래 녹음을 하는 등의 심각한 문제가 발생할 수 있다. 이를 위해서 안드로이드 중요 리소스 마다 permission을 두고 이를 얻지 못한 앱의 접근하는 것을 막고 있다.
permissions은 문자열로 표시되며 AndroidManifest.xml에 선언된다. 즉, 특정 permission을 원하는 앱은 AndroidManifest.xml에 해당 permission을 선언해야 한다. 선언된 permission들은 앱을 설치할 때 유저에게 안내되고 permission이 추가될 경우, 업데이트시 추가 안내된다.
2. Permission 사용하기
A. permission 사용하기
AndroidManifest.xml에 선언된 permission의 형태는 아래와 같다. 플랫폼 상에서는 이미 정의된 permission이 있는데 상세한 내용은 다음 링크를 확인하자.
<manifest …> <uses-permission android:name="android.permission.CAMERA” /> <uses-permission android:name="android.permission.INTERNET”/> <uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION”> </manifest …> |
B. Permission 정의하기
안드로이드 플랫폼에서는 이미 정의된 permission 외에 앱 스스로도 permission을 추가할 수 있다. 앱 자체가 만약 위험한 operation을 포함하고 있다면 다른 앱들이 쉽게 호출할 수 없도록 막을 필요가 있다. 이럴 경우에 앱 스스로 permission을 정의하고 사용함으로써 다른 앱의 접근을 막을 수 있다. 아래와 같은 형태로 AndroidManifest.xml에서 permission을 정의할 수 있다. 자세한 내용은 여기를 참고하자.
<permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY" android:label="@string/permlab_deadlyActivity" android:description="@string/permdesc_deadlyActivity" android:permissionGroup="android.permission-group.COST_MONEY" android:protectionLevel="dangerous" /> |
name : permission의 이름을 정의한다.
label & description : 앱이 인스톨할 때 유저에게 보이는 메시지다.
3. Component permissions
안드로이드 컴포넌트들은 각각이 퍼미션을 설정할 수 있다. 이런 컴포넌트 레벨의 permission 설정은 application 레벨의 permission 설정보다 우선순위가 높다. 컴포넌트 레벨 permission의 경우 AndroidManifest.xml 파일 내에서 각각의 <service>, <activity>, <receiver>, <provider> 내에서 <android:permission> 태그로 나타난다.
B. Activity Permissions
Activity를 시작시킬 수 있는 컴포넌트를 지정할 수 있다. 안드로이드 플랫폼 에서는 아래 두 메소드 수행시에 permission을 체크하고 문제가 있으면 SecurityException를 발생시킨다.
startActivity()
startActivityForResult()
C. Service Permissions
서비스를 시작시키거나 서비스에 bind 할 수 있는 컴포넌트를 지정할 수 있다. 플랫폼에서는 아래 메소드를 수행시에 permission을 체크하고 문제시 SecurityException를 발생시킨다.
Context.startService()
Context.stopService()
Context.bindService()
D. BroadcastReceiver permissions
broadcast를 보내거나 받을 수 있는 컴포넌트를 지정할 수 있다.
E. ContentProvider Permissions
ContentProvider를 통해서 데이터를 읽거나 쓸 수 있는 컴포넌트를 지정할 수 있다.
4. 시리즈 연재
'소프트웨어 > 안드로이드앱' 카테고리의 다른 글
[안드로이드 기초#7-1] UI 클래스들 (0) | 2015.07.05 |
---|---|
[안드로이드 기초#6] 프래그먼트 (Fragment) (1) | 2015.07.04 |
[안드로이드 기초#4] 인텐트 (Intent) (0) | 2015.07.02 |
[안드로이드 기초#3] 액티비티 (Activity) (0) | 2015.07.01 |
[안드로이드 기초#2] 어플리케이션 기본 (0) | 2015.06.30 |