Android

[구글 정책 업데이트] 모든 파일 액세스 권한에 대한 처리 (모든 파일 액세스(MANAGE_EXTERNAL_STORAGE) 권한

구글 정책 업데이트로 개발자가 해야할 일이 또 생겼다. 이번 정책 업데이트 미디어 저장소 접근권한을 사용하는 앱들은 대거 수정해야할 것으로 보여진다.

왜냐하면, 파일 및 디렉토리 접근을 개인 및 민감한 정보정책으로 책정하였기때문이다.

새로운 런타임 권한을 통해 사진, 비디오, 오디오 접근에 대한 앱 제어 및READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE 권한이 세분화되었다. 하아……….

 

 

업데이트 내용은 다음과 같다.

 

업데이트
2020년 7월 8일:

개발자 여러분의 주의가 필요한 신규 정책과 정책 업데이트가 도입되었습니다. 별도로 명시되어 있지 않은 한, 이러한 변경사항을 준수할 수 있도록 이 알림이 전송된 후 최소 30일 동안 모든 신규 및 기존 앱에 유예 기간이 적용됩니다. 다음은 모든 변경사항을 요약한 내용입니다.

  • Android R을 타겟팅하는 앱에 적절한 액세스 권한 및 선언 검토 프로세스를 적용하는 것을 비롯해 기기 저장공간에 대한 광범위한 액세스 권한을 요청하는 앱에 새로운 요구사항이 도입되었습니다.
  • Google Play에 게시되는 뉴스 앱에 적용되는 요구사항을 강조하는 뉴스 정책을 도입했습니다. 이 정책과 향후 적용될 개발자 요구사항에 관한 자세한 내용은 고객센터를 참고하세요.
  • 민감한 위치에서 AR 앵커링이 이루어질 경우 앱 내 보고를 요구하도록 사용자 제작 콘텐츠(UGC) 정책이 업데이트되었습니다.
  • 금지된 스팸/조작 광고 및 수익 창출 관행을 명확히 하기 위해 가족 광고 및 수익 창출 정책을 업데이트했습니다.

또한 부적절한 콘텐츠, 도박, 원치 않는 모바일 소프트웨어, 허위 노출 등의 광고 사기를 비롯한 여러 정책을 더 명확한 표현과 추가 사례를 사용하여 업데이트했습니다. 새로운 정책이 도입된 것은 아니며, 이러한 업데이트로 인해 Google의 정책 시행 기준과 관행이 변경되는 것은 아닙니다. 변경사항은 여기에서 확인할 수 있습니다. 이러한 정책 업데이트로 인해 앱이 영향을 받지 않는지 신중히 검토해 보시기 바랍니다.

 

모든 파일 액세스 권한

사용자 장치의 파일 및 디렉토리 속성은 개인 및 민감한 정보 정책 및 다음 요구 사항에 따라 개인 및 민감한 사용자 데이터로 간주됩니다 .

  • 앱은 앱이 작동하는 데 중요한 장치 스토리지에 대한 액세스 만 요청해야하며, 중요한 사용자 대면 앱 기능과 관련이없는 목적으로 타사를 대신하여 장치 스토리지에 대한 액세스를 요청할 수 없습니다.
  • R (Android 11, API 레벨 30) 이상을 실행하는 Android 디바이스 는 공유 스토리지의 액세스를 관리하려면 MANAGE_EXTERNAL_STORAGE 권한 이 필요합니다 . R을 대상으로하고 공유 스토리지에 대한 광범위한 액세스를 요청하는 모든 앱 ( “모든 파일 액세스”)은 게시하기 전에 적절한 액세스 검토를 통과해야합니다. 이 권한을 사용할 수있는 앱은 사용자에게“특별 앱 액세스”설정에서“모든 파일 액세스”를 활성화하라는 메시지를 명확하게 표시해야합니다. R 요구 사항에 대한 자세한 내용은이 도움말을 참조하십시오 .

 

모든 파일 액세스(MANAGE_EXTERNAL_STORAGE) 권한 사용하기

코로나19와 관련된 고려사항으로 인해 Android 11(API 수준 30)을 타겟팅하며 모든 파일 액세스 권한을 요청하는 앱은 2021년 초까지 Google Play에 업로드할 수 없습니다. 여기에는 신규 앱 및 기존 앱의 업데이트가 포함됩니다. 이 일시적인 업로드 제한은 Android 11(API 수준 30) 타겟팅 모든 파일 액세스 권한 요청 두 가지 모두에 해당하는 앱에만 적용됩니다.

앱에 모든 파일 액세스 권한이 필요하다고 생각되는 경우 현재로서는 타겟 SDK 레벨을 Android 11(API 수준 30)로 업데이트하지 않는 것이 좋습니다. Android 10을 타겟팅하는 경우 requestLegacyExternalStorage 플래그를 사용해 보시기 바랍니다.

 

데이터 저장소를 위한 앱 호환성 기능

개발자가 최신 버전의 Android를 지원할 수 있도록 플랫폼에서는 데이터 저장소를 위한 다음과 같은 앱 호환성 기능을 제공합니다.

범위 지정 저장소를 일시적으로 선택 해제

앱이 범위 지정 저장소와 완전히 호환되기 전에 다음 메서드 중 하나를 사용하여 일시적으로 선택 해제할 수 있습니다.

  • Android 9(API 수준 28) 이하를 타겟팅합니다.
  • Android 10(API 수준 29) 이상을 타겟팅하는 경우 앱의 매니페스트 파일에서 requestLegacyExternalStorage의 값을 true로 설정합니다.

    <manifest … >
    <!– This attribute is “false” by default on apps targeting
    Android 10 or higher. –>
    <application android:requestLegacyExternalStorage=”true” … >

    </application>
    </manifest>

     

Android 9 이하를 타겟팅하는 앱이 범위 지정 저장소를 사용할 때 어떻게 동작하는지 테스트하려면 requestLegacyExternalStorage의 값을 false로 설정하여 동작을 선택할 수 있습니다.

참고: 범위 지정 저장소를 선택 해제하더라도 MediaStore API를 사용하여 액세스된 이미지에서 수정되지 않은 위치 정보를 읽으려면 ACCESS_MEDIA_LOCATION 권한이 필요합니다.

 

 

Google Play에서는 모든 파일 액세스라는 특별한 앱 액세스 권한을 포함해 위험성이 높거나 민감한 권한의 사용을 제한합니다.

앱에서 모든 파일 액세스 권한을 요청할 필요가 없는 경우 앱을 성공적으로 게시하려면 앱의 매니페스트에서 이 권한을 삭제해야 합니다. 아래에서 정책을 준수하는 대체 구현 방식에 관해 자세히 알아볼 수 있습니다.

앱이 서비스이용 정책 요구사항을 충족하거나 예외 적용 대상이라고 생각한다면 Play Console의 선언 양식을 사용해 모든 파일 액세스 및 위험성이 높은 다른 권한을 선언해야 합니다.

정책 요구사항을 충족하지 못하거나 권한 요청 양식을 제출하지 않으면 앱이 Google Play에서 삭제될 수 있습니다.

모든 파일 액세스 권한은 언제 요청해야 하나요?

앱에서 저장소 액세스 프레임워크 또는 Media Store API 등 개인 정보를 더 안전하게 보호하는 권장사항을 효과적으로 사용할 수 없는 경우에만 모든 파일 액세스 권한을 요청해야 합니다.

또한 앱의 권한은 허용된 용도로만 사용되어야 하며 앱의 핵심 기능과 직접적으로 연결되어야 합니다. 핵심 기능은 앱의 기본 목적으로 정의됩니다. 핵심 기능이 제공되지 않으면 앱이 ‘고장’ 났거나 사용할 수 없게 된 것입니다. 핵심 기능 및 이러한 핵심 기능을 구성하는 모든 핵심 특징은 앱 설명에서 가장 두드러지게 소개 및 홍보되어야 합니다.

 

미디어에 접근하는 방법 (MediaStore.Audio.Media.DATA deprecated)

MediaStore.Images.Media.DATA

This constant was deprecated in API level 29. 
Apps may not have filesystem permissions to directly access this path. 
Instead of trying to open this path directly, 
apps should use ContentResolver#openFileDescriptor(Uri, String) to gain access.

[참고] 구글개발자 문서

[연관]

Android 11의 저장소 업데이트

공유 저장소의 미디어 파일 액세스

Android storage use cases and best practices(저장소 사용사례 및 권장 사항)

Device File Explorer에서 기기 내 파일 보기

https://www.youtube.com/watch?v=UnJ3amzJM94

앱별 파일에 액세스

https://brunch.co.kr/@huewu/11

https://medium.com/@chapi79/android-10-mediastore-%EB%B3%80%EA%B2%BD%EC%82%AC%ED%95%AD-cf7d3ef3957c

https://hjwang520.pixnet.net/blog/post/404661691-%E9%81%B8%E5%8F%96%E5%8F%8A%E8%A4%87%E8%A3%BDandroid%E6%89%8B%E6%A9%9F%E5%9C%96%E7%89%87-%E4%BD%BF%E7%94%A8mediastore

https://codechacha.com/ko/android-mediastore-insert-media-files/

https://developer.android.com/training/data-storage/files/media

안드로이드 P 까지만  : https://choidev-1.tistory.com/74

Leave a Reply

error: Content is protected !!