최신 안드로이드 버전에서 WiFi Scan result를 정상적으로 확인하기 위해서는
Location Permission이 있어야 하고
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
Location Provider가 켜져 있어야 한다.
하지만 동일한 소스로 Target Sdk Version을 21(Lollipop)으로 설정하고 빌드하면
Oreo 버전의 스마트 폰에서 Location Provider가 꺼져 있더라도 Scan Result를 Access할 수 있다.
또한 현재 연결된 Wifi의 WifiInfo도 정상적으로 Access할 수 있다.
Target Sdk Version을 21(Lollipop)로 빌드한 APK는 Oreo 버전의 스마트폰에서 Permission에 대한 권한 요청을 하지 않는다.
[구글 가이드 참조]
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html?hl=ko
android:targetSdkVersion
- 애플리케이션의 대상 API 레벨을 지정하는 정수입니다. 설정하지 않을 경우 기본값은
minSdkVersion
에 주어진 값과 동일합니다.이 특성은 개발자가 대상 버전을 테스트했고 시스템이 향후 앱의 대상 버전과의 호환성을 유지하도록 호환성 동작을 활성화해서는 안 됨을 시스템에 알립니다. 여전히 애플리케이션을 이전 버전(
minSdkVersion
까지)에서 실행할 수 있습니다.Android는 각 새 버전과 함께 진화하므로 몇몇 동작과 심지어 모양이 변경될 수 있습니다. 그러나 플랫폼의 API 레벨이 앱의
targetSdkVersion
이 선언한 버전보다 높은 경우 시스템은 앱이 예상대로 계속 작동하도록 호환성 동작을 활성화할 수 있습니다. 실행 중인 플랫폼의 API 레벨과 일치하는targetSdkVersion
을 지정하여 그러한 호환성 동작을 비활성화할 수 있습니다. 예를 들어, 해당 값을 "11" 이상으로 설정하면 Android 3.0 이상에서 실행 중일 때 시스템이 새 기본 테마(Holo)를 앱에 적용할 수 있으며 대형 화면에서 실행 중일 때 (API 레벨 11에 대한 지원이 대형 화면을 암시적으로 지원하므로) 화면 호환성 모드를 비활성화합니다.이 특성에 대해 설정한 값에 기반하여 시스템이 활성화할 수 있는 호환성 동작이 많이 있습니다.
Build.VERSION_CODES
참조에서 해당 플랫폼 버전별로 이러한 몇몇 동작에 대해 설명합니다.애플리케이션을 각 Android 릴리스와 함께 유지 관리하려면 최신 API 레벨과 일치하도록 이 특성 값을 높인 후에 해당 플랫폼 버전에서 애플리케이션을 철저히 테스트해야 합니다.
도입: API 레벨 4
'programmer > android' 카테고리의 다른 글
Android studio 3.1 & Gradle 4.4 Build Error (0) | 2018.04.04 |
---|---|
안드로이드 화면 비율 및 밀도 별 리소스 관리 (0) | 2018.01.02 |
Custom Switch Bug (0) | 2017.02.22 |
GridView row height (0) | 2017.01.25 |
Error:java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: (0) | 2016.12.14 |