기본적으로 uses-permission과 사용하는 의미가 동일합니다. 즉, 앱에서 이러한 권한을 사용한다고 알려주는 것입니다.
먼저 AndroidManifest.xml 에서 아래 형식을 가지고 있습니다.
<uses-permission-sdk-23 android:name="string"
android:maxSdkVersion="integer" />
이전에는 uses-permission-sdk-m을 사용했지만, 현재 Deprecated 되어서 uses-permission-sdk-23을 사용합니다.
그냥 uses-permission을 사용하면 되는데 왜 uses-permission-sdk-23이 필요할까요?
그리고, uses-permission-sdk-22나 uses-permission-sdk-24는 왜 존재하지 않고 23만 존재할까요?
uses-permission-sdk-23은 API version 23 (Android 6.0) 이상이 설치된 디바이스에서 권한을 사용한다는 의미입니다.
이는 API version 23인 Android 6.0에서 새롭게 추가된 Runtime permission 때문입니다.
앱이 필요한 권한의 수준이 위험(Dangerous)인 경우 보안을 위해서 실행중 필요시 사용자에 권한 허용여부를 결정하도록 하는 기능입니다. 자세한 내용은 아래글 참조하세요.
2019/02/07 - 안드로이드 런타임 권한 확인 및 요청 처리하기 (Android Runtime permission check and request)
위험 권한을 사용한 새로운 기능을 추가했습니다. 그런데, 그 기능이 [Android 6.0 이상에만 유효하거나] 앱을 동작하는데 [필수적인 기능이 아니다]라고 한다면, Runtime permission을 지원하는 Android 6.0 이상에는 해당 기능 사용을 실행중 발생하는 권한 요청시 사용자가 결정할 수 있습니다.
반면, 설치시 권한 승인을 해야 하는 Android 6.0 미만 디바이스에는 사용하지 않는데 권한 승인을 해줘야 하거나 필수적인 기능이 아님에도 강제로 추가됩니다.
이런 문제를 해결하기 위해서 [use-permission-sdk-23]을 사용하게 되면 Android 6.0 이상 디바이스에만 권한을 추가하며 그 미만 디바이스에서는 권한이 추가되지 않기에 설치시 권한 승인 및 강제로 기능이 추가되지 않습니다.
주로 Android 6.0 미만 디바이스까지 지원하는 앱에서 신규 기능을 추가하면서 겪게 될 수 있는 부분입니다.
참고로 maxSdkVersion의 경우 향후 최신 API 버전을 가진 디바이스에서 권한이 없어서 되는 경우에 그 직전 API 버전을 적어주면 됩니다.
여기까지 입니다. 도움이 되셨기를...
'Android Dev > App Basics & UI' 카테고리의 다른 글
야간 모드 or 나이트 모드 (Night mode) 설정 (1) | 2021.03.31 |
---|---|
android:visibility - invisible과 gone 차이 간단 설명과 비교 그림 (0) | 2020.09.18 |
앱에서 시스템 설정 변경 / 화면 밝기 및 화면 방향 조절 예제 / Settings SettingsProvider WRITE_SETTINGS (2) | 2019.04.03 |
안드로이드 런타임 권한 확인 및 요청 처리하기 (Android Runtime permission check and request) (5) | 2019.02.07 |
버그 리포팅을 위한 준비 / 이전 오류 정보를 보관하는 tombstone과 dropbox (2) | 2018.12.29 |