Request location permissions | Android Developers

Foreground vs. Background


포그라운드 액세스 권한 → 앱에 위치 정보를 한 번 또는 정의된 시간 동안 공유하는 기능이 포함되어 있을 경우 필요

백그라운드 액세스 권한 → 앱에 위치 정보를 지속적으로 다른 사용자와 공유하는 기능이 포함되어 있을 경우 필요

ACCESS_FINE_LOCATION & ACCESS_COARSE_LOCATION


ACCESS_FINE_LOCATION → 앱에서 정확한 위치 정보를 가져올 수 있음

ACCESS_COARSE_LOCATION → 앱에서 대락적인 위치 정보를 가져올 수 있음

val permissions = listOf(
    permission.ACCESS_FINE_LOCATION,   // 반드시 ACCESS_COARSE_LOCATION과 함께 요청
    permission.ACCESS_COARSE_LOCATION
)
val deniedPermissions = permissions.filter {
    checkSelfPermission(it) == PackageManager.PERMISSION_DENIED
}

if (deniedPermissions.isNotEmpty()) {
		requestPermissions(permissions.toTypedArray, 100)
}

사용자가 이전에 ACCESS_COARSE_LOCATION 만 승인했더라도, 액세스 권한을 ACCESS_FINE_LOCATION으로 업그레이드하도록 재요청할 수 있음