이 페이지에는 기기의 데이터에 액세스하거나 빌트인 카메라 또는 마이크와 같은 기기 기능을 사용하기 위해 애플리케이션에 사용자의 권한을 요청하는 방법을 설명합니다.
Google의 권한 요청 가이드라인에 따르면, 사용자가 최초로 권한 요청을 거부하는 경우 이러한 권한을 요청하는 이유를 표시하고 요청을 다시 표시하는 방법이 권장됩니다.
Android 기기에서 권한을 요청하는 시기 및 방법에 대한 자세한 내용은 Android 개발자 가이드에 있는 앱 권한 베스트 프랙티스를 참조하십시오.
런타임 권한 API에는 Android 버전 6(API 레벨 23)이 필요합니다. 애플리케이션의 타겟 API를 변경하려면 다음 단계를 따르십시오.
애플리케이션이 제한된 데이터 또는 특정 기기 기능 사용 권한을 요청하기 전에 Android 앱 매니페스트에서 권한을 선언해야 합니다. 자세한 내용은 애플리케이션에 대한 권한 선언을 참조하십시오.
Android.Permission API는 애플리케이션이 현재 가지고 있는 권한을 확인하고 애플리케이션에 필요하지만 가지고 있지 않은 권한을 요청하는 데 사용할 수 있는 기능을 제공합니다.
런타임 시 권한을 요청하는 프로세스에 대한 개요는 다음과 같습니다.
Permission.HasUserAuthorizedPermission을 사용하여 애플리케이션에 필요한 데이터 또는 기능에 대해 사용자가 이미 권한을 부여했는지 확인합니다.
이 API를 사용하는 방법을 보여 주는 코드 예시는 Permission.HasUserAuthorizedPermission을 참조하십시오.
특정 권한 요청의 이유를 표시해야 하는지 확인하려면 Permission.ShouldShowRequestPermissionRationale을 사용합니다.
이유가 필요한 경우, 애플리케이션이 특정 기기 기능에 액세스해야 하는 이유가 나와 있는 메시지를 표시합니다. 메시지를 표시한 후 권한 요청을 전송합니다.
이유가 필요하지 않은 경우 직접 권한 요청을 전송합니다.
이 API를 사용하는 방법을 보여 주는 코드 예시는 Permission.ShouldShowRequestPermissionRationale을 참조하십시오.
데이터 또는 기능 사용 권한을 요청하려면 Permission.RequestUserPermission을 사용합니다. 이 메서드를 호출하면 Android는 사용자가 권한을 부여하거나 거부하는 데 사용할 수 있는 시스템 권한 다이얼로그를 엽니다.
이 API를 사용하는 방법을 보여 주는 코드 예시는 Permission.RequestUserPermission을 참조하십시오.
사용자의 기기에서 한 번에 여러 리소스에 액세스할 권한을 요청하려면 Permission.RequestUserPermissions를 사용합니다. 이 메서드는 기기의 카메라, 마이크 또는 위치와 같은 특정 리소스에 액세스할 수 있는 특정 권한을 나타내는 문자열의 배열을 사용합니다.
이 메서드는 사용자가 권한을 부여하거나 거부한 후 실행할 코드를 지정하는 데 사용할 수 있는 PermissionCallbacks 오브젝트를 사용할 수 있습니다. 이를 사용하여 사용자가 권한 요청을 승인하는 즉시 기기 기능을 사용할 수 있습니다. 예를 들어 마이크에서 기록을 시작할 수 있습니다.
팁: 권한을 요청할 때 사용자에게 애플리케이션에 해당 기능이 필요한 이유를 설명하는 메시지를 표시하는 것이 가장 좋습니다.
참고: 사용자가 시스템 권한 다이얼로그에서 Do not ask me again 옵션을 활성화했거나 권한을 두 번 이상 거부한 경우, RequestUserPermission()은 시스템 다이얼로그를 열지 않습니다. 이 경우 사용자는 애플리케이션 권한 설정으로 이동하여 수동으로 권한을 활성화해야 합니다.
사용자가 애플리케이션에 필요한 권한을 거부하면 사용자가 수동으로 권한 요청 다이얼로그를 표시할 수 있는 방법을 제공하십시오. 이를 수행하는 방법은 애플리케이션에 따라 다르지만, 해결 방법 중 한 가지는 Permission.RequestUserPermission을 호출하는 버튼을 제공하는 것입니다.