[android] 안드로이드 10 호환성
안드로이드 10은 안드로이드 앱과 기기 간의 호환성에 대한 새로운 요구 사항을 도입했습니다. 이 문서에서는 안드로이드 10에서의 호환성을 유지하고 개선하는 방법에 대해 설명하겠습니다.
1. 제한된 파일 액세스
안드로이드 10은 외부 저장소 및 공유 저장소의 액세스 권한을 제한하고 있습니다. 앱의 파일 액세스를 위해서는 새로운 저장소 권한이 필요하며 공유 저장소 액세스를 위해서는 Intent
의 FLAG_GRANT_READ_URI_PERMISSION
및 FLAG_GRANT_WRITE_URI_PERMISSION
플래그를 사용해야 합니다.
아래는 외부 저장소 액세스의 예시 코드입니다:
if (ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// 파일 읽기 및 쓰기 작업 수행
} else {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
2. 제한된 백그라운드 작업
안드로이드 10은 백그라운드 작업에 제한을 두고 있습니다. 제한된 백그라운드 앱은 백그라운드에서 작업을 수행할 때 많은 제한을 받게 됩니다. 따라서, 안드로이드 10에서는 제한된 백그라운드에서 실행되는 작업에 대한 주의가 필요합니다.
아래는 제한된 백그라운드 작업을 처리하는 예시 코드입니다:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (!ActivityManager.isUserAMonkey()) {
// 제한된 백그라운드 앱에서 실행되는 작업 수행
}
}
3. 위치 액세스 변경 사항
안드로이드 10에서는 위치 액세스에도 일부 변경 사항이 있습니다. 이에 대한 처리 방안을 정확히 이해하고 적용해야 합니다.
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
// 위치 정보에 액세스하여 작업 수행
} else {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE);
}
안드로이드 10 호환성을 유지하고 앱의 사용성을 향상시키려면 안드로이드 공식 개발자 문서를 참고하는 것이 좋습니다.