반응형

2021년 11월 부터 구글마켓 등록 시 Build SDK 버전이 최하 API30으로 잡아서 동작해야 함

 

관련해서 변동사항이 많은데 일단 중요한점은 2가지!!

 

1. Background Location 권한 

android.permission.ACCESS_BACKGROUND_LOCATION
반응형

2. 저장소 Storage 접근 제한

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="28"/>

 


하나씩 설명을 해보겠습니다.

 

먼저 Background Location 관련해서 시작할께요

 

기존에 Build SDK 버전을 29로 설정을 했을 경우에도 원래는 적용이 되었던 내용입니다.

Background 에서 위치정보를 수신하기 위해서 추가적으로 권한요청이 필요해졌습니다.

Background 에서 위치정보를 수신하기 위해서는 '항상 허용' 권한이 필요하지만 아래 첨부처럼 '항상 허용' 이란 부분이 사라졌습니다.

[참고] 권한요청 스크린샷

[구글 개발 자료] 위치 정보 액세스 권한 요청

 

위치 정보 액세스 권한 요청  |  Android 개발자  |  Android Developers

위치 정보 액세스 권한 요청 사용자 개인 정보를 보호하려면 위치 서비스를 사용하는 앱에서 위치 정보 액세스 권한을 요청해야 합니다. 위치 정보 액세스 권한을 요청할 때는 다른 런타임 권한

developer.android.com

 

해당 링크 내용을 보게되면 아래와 같은 내용이 있습니다.

하지만 Android 11(API 수준 30) 이상에서는 시스템 대화상자에 항상 허용 옵션이 포함되지 않습니다. 대신 사용자는 그림 7에 나와 있는 것처럼 설정 페이지에서 백그라운드 위치를 사용 설정해야 합니다.

설명처럼 사용자가 직접!! 어플리케이션 설정에 이동하여 직접~!! '항상 허용' 으로 설정해야 하는 상황입니다.

지금처럼 팝업에서 '항상 허용' 클릭은 이제 불가능 합니다.

SMALL

두번째로 저장소 권한!!!

 

현재까지는 아래와 같이 절대경로에 폴더를 만들어 많이 사용하였습니다.

String DIR_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "패키지명";

 

하지만 이젠 해당 Path에는 접근하지 못하게되었습니다.

 

대신!! 공유폴더를 사용하는것을 권장하고 있습니다.

 

[구글 공식 문서]

 

Android 11의 저장소 업데이트  |  Android 개발자  |  Android Developers

Android 11의 저장소 업데이트 Android 11(API 수준 30)에서는 플랫폼을 한층 더 강화하여 외부 저장소의 앱 및 사용자 데이터를 더욱 안전하게 보호합니다. 이 버전에는 미디어의 원시 파일 경로 액세

developer.android.com

 

설명 코드 경로
사진 Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM).getPath()
다운로드 Environment.getExternalStoragePublicDirectory(DIRECTORY_DOWNLOAD).getPath()
알람 오디오 Environment.getExternalStoragePublicDirectory(DIRECTORY_ALARMS).getPath()
음악 Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC).getPath()
영상 Environment.getExternalStoragePublicDirectory(DIRECTORY_MOVIES).getPath()
Noti 알람음 Environment.getExternalStoragePublicDirectory(DIRECTORY_NOTIFICATIONS).getPath()
그림파일 Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES).getPath()
팟캐스트 Environment.getExternalStoragePublicDirectory(DIRECTORY_PODCASTS).getPath()

해당 경로처럼 지정된 기본 공유폴더 사용을 권장하게되었습니다.

 

이렇게 되면 어떤상황이 생기냐면.....

 

1. 공용폴더에 폴더 생성은 가능

2. 공용폴더에 있는 파일을 변경하기위해 호출은 불가...(개별권한요청 필요)

 

개별권한에 대한 내용은 따로 정리해서 올리겠습니다. 

 

일단 공용폴더 및 아래와 같이 File Path를 사용하면 사용가능합니다.

String DIR_PATH = context.getExternalFilesDir(null).getPath();

해당 Path 는 Android/data/패키지명/files 경로로 선언되고 해당 폴더는 앱 삭제 시 같이 삭제되는 폴더이니간 사용에 유의해야 합니다. 

 

일단 오늘은 여기까지 ㅎㅎ 

추가사항은 업데이트하겠습니다. 이만

반응형

+ Recent posts