본문 바로가기
TIL/Android

권한

by J1-H00N 2024. 4. 5.

안드로이드는 개인 정보, 센서, 카메라, 저장소 등 개인 정보와 관련된 기능을 사용하기 위해서는 권한을 등록해야 한다.

권한 등록은 사용자가 애플리케이션을 다운로드 받거나 설치 후 애플리케이션 정보에서 확인이 가능하다.

권한 등록의 목적은 사용자에게 애플리케이션이 어떠한 기능을 사용하는지 알려주는 목적으로 사용한다.

권한 등록을 필요로 하는 기능을 사용할 때 권한을 등록하지 않으면 오류가 발생하여 개발자는 반드시 권한을 등록해야 하고 등록된 권한은 사용자에게 고지된다.

 

안드로이드 6.0 버전 부터 개인 정보와 관련된 권한은 애플리케이션 내부에서 고지하고 사용허가를 받아야 한다.

권한 사용시 반드시 사용자에게 고지하고 이를 승인받는 작업이 필요하다.

사용 허가를 받을 필요 없는 권한(개인 정보과 관련되지 않은 권한)은 사용 허가를 받은 상태로 처리된다.

 

manifests > AndroidManifest.xml 에서 추가가 가능하다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        .
        .
        .
        .
    </application>

    <!--권한 허용 필요 X, 허용 권한 목록에도 표시되지 않음. <== 기본적으로 허용 상태이기 때문에-->
    <!--인터넷 연결-->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!--권한 허용 필요-->
    <!--gps를 사용한 위치 정보, 높은 정확도, 높은 에너지 소비-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!--wifi 네트워크 및 기지국 소스를 기반으로 대략적인 위치 정, 적은 정확도, 적은 에너지 소비-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!--연락처 읽기/쓰기-->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <!--외부 저장소 읽기/쓰기, 안드로이드 13부터는 아래 권한이 사용되지 않으며 image, video, audio로 나뉜다.-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

</manifest>

 

 

주요 메서드   

  • requestPermission(요청 목록, 반환 코드) : 요청 목록 중 허용 안 된 권한이 있다면 권한 허용 요청
  • onRequestPermissionResult() : 권한 요청이 끝나면 자동으로 호출되는 메서드, 만약 필요 권한이 여러개라면 하나하나 for나 if를 사용해 결과를 만들어줘야 한다. 
  • ActivityResultCallback : 위 문제점을 개선하기 위한 인터페이스, 각각의 권한 용 callback을 따로 만들어 구현한다.

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

Activity  (0) 2024.04.24
Menu  (0) 2024.04.09
Adapter View  (0) 2024.04.04
Widget  (0) 2024.03.28
view와 layout  (0) 2024.03.20