공유 저장소 액세스가 필요한 대다수 앱은 미디어 파일 공유 및 미디어가 아닌 파일 공유 관련 권장사항을 준수할 수 있습니다. 그러나 일부 앱에는 기기의 파일에 광범위한 액세스가 필요하지만 개인 정보를 안전하게 보호하는 저장소 권장사항을 사용하여 효율적으로 작업을 실행할 수 없는 핵심 사용 사례가 있습니다.
Android는 이러한 상황을 위해 모든 파일 액세스라는 특수 앱 액세스를 제공합니다.
예를 들어 바이러스 백신 앱의 기본 사용 사례에서는 여러 디렉터리에서 많은 파일을 정기적으로 검사해야 할 수 있습니다. 이 검사에서 시스템 파일 선택기를 사용하여 디렉터리를 선택하는 데 사용자 상호작용이 반복적으로 필요하다면 사용자 환경이 저하됩니다. 파일 관리자 앱, 백업 및 복원 앱, 문서 관리 앱과 같은 다른 사용 사례에도 이와 유사한 상황이 발생합니다.
모든 내부 저장소 디렉터리에 대한 쓰기 액세스. 단, /Android/data/, /sdcard/Android 및 대부분의 /sdcard/Android 하위 디렉터리는 제외됩니다. 이 쓰기 액세스에는 직접 파일 경로 액세스가 포함됩니다.
이 권한이 부여된 앱은 다른 앱에 속하는 앱별 디렉터리에 여전히 액세스할 수 없습니다. 이러한 디렉터리는 저장소 볼륨에서 Android/data/의 하위 디렉터리로 표시되기 때문입니다.
앱에 MANAGE_EXTERNAL_STORAGE 권한이 있으면 MediaStore API나 직접 파일 경로를 사용하여 이러한 추가 파일과 디렉터리에 액세스할 수 있습니다. 그러나 저장소 액세스 프레임워크를 사용할 때 MANAGE_EXTERNAL_STORAGE 권한이 없으면 파일이나 디렉터리에만 액세스할 수 있습니다.
getManageSpaceActivityIntent() 메서드는 패키지 이름과 요청 코드를 가져와 다음 중 하나를 반환합니다.
PendingIntent: 패키지 이름이 지정된 앱이 맞춤 '공간 관리' 활동을 정의한 경우 반환됩니다. 그러면 getManageSpaceActivityIntent() 메서드를 호출한 파일 관리 앱이 반환된 인텐트를 호출하여 사용자를 맞춤 활동으로 보낼 수 있습니다.
null: 패키지 이름이 지정된 앱이 '공간 관리' 활동을 정의하지 않는 경우 반환됩니다.
테스트용으로 MANAGE_EXTERNAL_STORAGE 사용 설정
MANAGE_EXTERNAL_STORAGE 권한이 앱에 미치는 영향을 알아보려면 테스트용으로 권한을 사용 설정할 수 있습니다. 권한을 사용 설정하려면 테스트 기기에 연결된 머신에서 다음 명령어를 실행합니다.
adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow
Google Play 알림
이 섹션에서는 Google Play에 앱을 게시하는 개발자에게 알림을 제공합니다.
광범위한 공유 저장소 액세스를 제한하기 위해 Google Play 스토어에서는 Android 11(API 수준 30) 이상을 타겟팅하고 MANAGE_EXTERNAL_STORAGE 권한을 통해 '모든 파일 액세스'를 요청하는 앱을 평가하는 정책을 업데이트했습니다. 이 정책은 2021년 5월부터 적용됩니다.
앱이 Android 11 이상을 타겟팅하고 MANAGE_EXTERNAL_STORAGE 권한을 선언하면 Android 스튜디오에서는 그림 1과 같이 린트 경고를 표시합니다. 이 경고는 Google Play 스토어에 권한 사용을 제한하는 정책이 있음을 알립니다.
그림 1.MANAGE_EXTERNAL_STORAGE 권한 관련 Google Play 정책을 개발자에게 알려 주는 Android 스튜디오의 린트 경고
앱에서 저장소 액세스 프레임워크나 Media Store API와 같이 개인 정보를 더 안전하게 보호하는 API를 효과적으로 사용할 수 없는 경우에만 MANAGE_EXTERNAL_STORAGE 권한을 요청해야 합니다. 앱의 권한은 허용된 용도로만 사용되어야 하며 앱의 핵심 기능과 직접적으로 연결되어야 합니다. 앱에 다음과 유사한 사용 사례가 포함되어 있는 경우 MANAGE_EXTERNAL_STORAGE 권한을 요청할 수 있습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-08-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-08-27(UTC)"],[],[],null,["The majority of apps that require shared storage access can follow the best\npractices for [sharing media\nfiles](/training/data-storage/use-cases#share-media-all) and [sharing non-media\nfiles](/training/data-storage/use-cases#sharing-non-media-files). However, some\napps have a core use case that requires broad access to files on a device, but\ncan't access them efficiently using the privacy-friendly storage best practices.\nAndroid provides a special app access called *all-files access* for these\nsituations.\n\nFor example, an anti-virus app's primary use case might require regular scanning\nof many files across different directories. If this scanning requires repeated\nuser interactions to select directories using the system file picker, it\nprovides a poor user experience. Other use cases---such as file manager apps,\nbackup and restore apps, and document management apps---require similar\nconsiderations.\n\nRequest all-files access\n\nAn app can request all-files access from the user by doing the following:\n\n1. Declare the [`MANAGE_EXTERNAL_STORAGE`](/reference/android/Manifest.permission#MANAGE_EXTERNAL_STORAGE) permission in the manifest.\n2. Use the [`ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION`](/reference/android/provider/Settings#ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) intent action to direct users to a system settings page where they can enable the following option for your app: **Allow access to manage all files**.\n\nTo determine whether your app has been granted the `MANAGE_EXTERNAL_STORAGE`\npermission, call\n[`Environment.isExternalStorageManager()`](/reference/android/os/Environment#isExternalStorageManager()).\n\nOperations permitted by MANAGE_EXTERNAL_STORAGE\n\nThe `MANAGE_EXTERNAL_STORAGE` permission grants the following:\n\n- Read and write access to all files within [shared\n storage](/training/data-storage/shared).\n\n | **Note:** The `/sdcard/Android/media` directory is part of shared storage.\n- Access to the contents of the\n [`MediaStore.Files`](/reference/android/provider/MediaStore.Files) table.\n\n- Access to the root directory of both the USB on-the-go (OTG) drive and the SD\n card.\n\n- Write access to all internal storage directories except\n `/Android/data/`, `/sdcard/Android`, and most subdirectories of\n `/sdcard/Android`. This write access includes [direct file\n path](/training/data-storage/shared/media#direct-file-paths) access.\n\n Apps that are granted this permission still can't access the [app-specific\n directories](/training/data-storage/app-specific) that belong to other apps,\n because these directories appear as subdirectories of `Android/data/` on a\n storage volume.\n\nWhen an app has the `MANAGE_EXTERNAL_STORAGE` permission, it can access these\nadditional files and directories using either the\n[`MediaStore`](/reference/android/provider/MediaStore) API or [direct file\npaths](/training/data-storage/shared/media#direct-file-paths). When you use the\n[Storage Access Framework](/training/data-storage/shared/documents-files),\nhowever, you can only access a file or directory if you can do so without\nhaving the `MANAGE_EXTERNAL_STORAGE` permission.\n\nInvoke another app's storage management activity\n\nOn Android 12 (API level 31) and higher, apps that have both the\n[`MANAGE_EXTERNAL_STORAGE`](/reference/android/Manifest.permission#MANAGE_EXTERNAL_STORAGE)\npermission and the\n[`QUERY_ALL_PACKAGES`](/reference/android/Manifest.permission#QUERY_ALL_PACKAGES)\npermission---such as file management apps---can use the\n[`getManageSpaceActivityIntent()`](/reference/android/os/storage/StorageManager#getManageSpaceActivityIntent(java.lang.String,%20int))\nto send users to another app's [custom space management\nactivity](/training/data-storage/app-specific#create-storage-management-activity).\n\nThe `getManageSpaceActivityIntent()` method takes in a package name and a\nrequest code, and it returns one of the following:\n\n- A [`PendingIntent`](/reference/android/app/PendingIntent), if the app with the specified package name has defined a custom \"manage space\" activity. The file management app that called the `getManageSpaceActivityIntent()` method can then invoke the returned intent to send users to the custom activity.\n- `null`, if the app with the specified package name doesn't define a \"manage space\" activity.\n\nEnable MANAGE_EXTERNAL_STORAGE for testing\n\nTo explore how the `MANAGE_EXTERNAL_STORAGE` permission affects your app, you\ncan enable the permission for testing. To do so, run the following\ncommand on the machine that's connected to your test device: \n\n```\nadb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow\n```\n\nGoogle Play notice\n\nThis section provides a notice for developers who publish apps on Google Play.\n\nTo limit broad access to shared storage, the Google Play store has [updated its\npolicy](https://support.google.com/googleplay/android-developer/answer/10467955)\nto evaluate apps that target Android 11 (API level 30) or higher and request\nall-files access through the `MANAGE_EXTERNAL_STORAGE` permission. This policy\nis in effect as of May 2021.\n\nWhen your app targets Android 11 or higher and it declares the\n`MANAGE_EXTERNAL_STORAGE` permission, Android Studio shows the lint warning that\nappears in figure 1. This warning reminds you that the Google Play store has a\npolicy that limits usage of the permission.\n**Figure 1.** Lint warning in Android Studio that reminds developers about the Google Play policy regarding the `MANAGE_EXTERNAL_STORAGE` permission.\n\nRequest the `MANAGE_EXTERNAL_STORAGE` permission only when your app\ncan't effectively make use of the more privacy-friendly APIs, such as the [Storage\nAccess Framework](/training/data-storage/shared/documents-files) or the [Media\nStore API](/training/data-storage/shared/media). Your app's usage\nof the permission must fall within permitted uses and must be directly tied to\nthe core functionality of the app. If your app includes a use case\nsimilar to any of the following, it's likely that it can request the\n`MANAGE_EXTERNAL_STORAGE` permission:\n\n- File managers\n- Backup and restore apps\n- Anti-virus apps\n- Document management apps\n- On-device file search\n- Disk and file encryption\n- [Device-to-device data migration](/guide/topics/data/testingbackup#TestingTransfer)"]]