공통 [10.3 리오] 안드로이드 권한 요청 매커니즘 변경이 반영되었습니다.
2018.12.06 11:37
안드로이드 API 레벨 26 지원
RAD 스튜디오 10.3 리오는 안드로이드 API 레벨 26을 공식 지원합니다.
구글은 보안과 성능에 최적화된 최신 API 기반으로 앱을 만들고, 사용자가 혜택을 누릴 수 있도록, 플레이 스토어에 등록 시 안드로이드 레벨 26 이상을 요구하도록 정책을 변경했습니다.(신규앱 등록 2018년 8월 부터, 기존앱 업데이트 2018년 11월 부터)
RAD 스튜디오 10.3 리오는 최신 SDK와 NDK를 지원하고, 매니페스트에 적절한 API레벨을 설정할 수 있도록 업데이트 되었습니다.
또한 최신 API에서 변경된 권한 모델등을 제공하도록 업데이트 되었습니다.
새로운 안드로이드 런타임 권한 모델 지원
안드로이드 API의 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다.
기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다.
기존 권한 요청 방식 |
새로운 권한 요청 방식 |
위 변경에 따라 10.3 리오에서는 사용 권한을 요청하는 메소드가 추가되었고, 그 결과를 콜백 메소드로 받아 기능을 수행할 수 있도록 업데이트 되었습니다.
다음 델파이 코드는 위치를 권한을 요청하는 델파이 Location 샘플코드(Object Pascal/Mobile Snippets/Location)의 일부입니다.
procedure TLocationForm.swLocationSensorActiveSwitch(Sender: TObject); begin {$IFDEF ANDROID} if swLocationSensorActive.IsChecked then PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION)], procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>) begin if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then { activate or deactivate the location sensor } LocationSensor1.Active := True else begin swLocationSensorActive.IsChecked := False; TDialogService.ShowMessage('Location permission not granted'); end; end) else {$ENDIF} LocationSensor1.Active := False; end;
다음 샘플 프로젝트에서 새로운 안드로이드 권한 모델의 실제 사용사례를 확인할 수 있습니다. 여러분들의 안드로이드 코드를 업데이트 하기 위해 참고하실 수 있습니다.
- CPP/Mobile Snippets/AccessCameraApp
- CPP/Mobile Snippets/AudioRecPlay
- CPP/Mobile Snippets/CameraComponent
- CPP/Mobile Snippets/CameraRoll
- CPP/Mobile Snippets/Location
- CPP/Mobile Snippets/PhoneDialer
- CPP/Mobile Snippets/ShareSheet
- CPP/Multi-Device Samples/Device Sensors and Services/Address Book/BirthdayReminder
- CPP/Multi-Device Samples/Device Sensors and Services/Address Book/Contacts
- CPP/Multi-Device Samples/Device Sensors and Services/Bluetooth/BLEScanner
- CPP/Multi-Device Samples/Device Sensors and Services/FlashLight
- CPP/Multi-Device Samples/Device Sensors and Services/Map Type Selector
- CPP/Multi-Device Samples/Device Sensors and Services/SensorInfo
- CPP/Multi-Device Samples/Media/MusicPlayer
- CPP/Multi-Device Samples/Media/PhotoEditorDemo
- Object Pascal/Mobile Snippets/AccessCameraApp
- Object Pascal/Mobile Snippets/AudioRecPlay
- Object Pascal/Mobile Snippets/CameraComponent
- Object Pascal/Mobile Snippets/CameraRoll
- Object Pascal/Mobile Snippets/Location
- Object Pascal/Mobile Snippets/PhoneDialer
- Object Pascal/Mobile Snippets/ShareSheet
- Object Pascal/Multi-Device Samples/Device Sensors and Services/Address Book/BirthdayReminder
- Object Pascal/Multi-Device Samples/Device Sensors and Services/Address Book/Contacts
- Object Pascal/Multi-Device Samples/Device Sensors and Services/App Tethering/PhotoWall/Mobile
- Object Pascal/Multi-Device Samples/Device Sensors and Services/Bluetooth/BLEScanner
- Object Pascal/Multi-Device Samples/Device Sensors and Services/FlashLight
- Object Pascal/Multi-Device Samples/Device Sensors and Services/Map Type Selector
- Object Pascal/Multi-Device Samples/Device Sensors and Services/SensorInfo
- Object Pascal/Multi-Device Samples/Media/MusicPlayer
- Object Pascal/Multi-Device Samples/Media/PhotoEditorDemo
- Object Pascal/RTL/Tethering/PhotoWall/Mobile
관련글
- [docwiki] Android Permission Model
10.3 리오의 업데이트 버전들