[android] 안드로이드 10 호환성

안드로이드 10은 안드로이드 앱과 기기 간의 호환성에 대한 새로운 요구 사항을 도입했습니다. 이 문서에서는 안드로이드 10에서의 호환성을 유지하고 개선하는 방법에 대해 설명하겠습니다.

1. 제한된 파일 액세스

안드로이드 10은 외부 저장소 및 공유 저장소의 액세스 권한을 제한하고 있습니다. 앱의 파일 액세스를 위해서는 새로운 저장소 권한이 필요하며 공유 저장소 액세스를 위해서는 IntentFLAG_GRANT_READ_URI_PERMISSIONFLAG_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 호환성을 유지하고 앱의 사용성을 향상시키려면 안드로이드 공식 개발자 문서를 참고하는 것이 좋습니다.