Android에서 범위 지정 저장소 탐색

Android 개발자를위한 새로운 스토리지 시스템

Unsplash의 Frank mckenna의 사진.

Android OS 수준의 최근 개선 사항을 보면 팀은 대부분 보안 및 개인 정보 보호에 중점을 둡니다. 예를 들어 Android에서 안전한 환경 설정 저장소를 제공하기 위해 팀은 최근 EncryptedSharedPreferences 라이브러리를 출시했습니다 . 위치 및 마이크와 같은 민감한 데이터 권한과 관련하여 앱이 해당 인스턴스에 대해서만 액세스 할 수있는 일회성 권한이 밝혀졌습니다.

마지막으로 스토리지와 관련하여 범위가 지정된 스토리지를 확보했습니다. 여기서 미디어의 전체 라이브러리 액세스는 Play Console에서 허용 된 앱에서만 사용할 수 있습니다.

문제

Android 스토리지 시스템에는 10 년이 지난 후에도 새로운 스토리지 시스템을 만드는 두 가지 문제가 있습니다.

  1. 그것은 꽤 많이 쉬운있는 모든 안드로이드 애플 리케이션을위한입니다 READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE 미디어 파일에 액세스하고 사용할 수있는 권한.
  2. 저장소 권한을 요청하는 대부분의 앱은 미디어 파일을 광범위하게 볼 필요가 없습니다. 미디어를 업로드하거나 시스템에 미디어 파일을 쓰려는 채팅 애플리케이션을 가져옵니다. 앱은 하나의 미디어 파일에만 액세스하면되지만 현재 생태계에서는 전체 미디어 컬렉션이 앱에 노출됩니다.

범위가 지정된 스토리지는 하루를 절약하기 위해 여기에 있습니다. 앱의 요구 사항에 따라 미디어 파일의 노출을 제한합니다. Android 10부터는 Play Console에서 허용 목록에 포함되지 않으면 전체 미디어 컬렉션에 액세스 할 수 없습니다. 또한 스토리지 권한 없이도 채팅 앱에서 미디어 파일에 액세스하고 시스템에 파일을 저장하는 것과 같은 간단한 작업을 수행 할 수있는 새로운 미디어 프레임 워크를 제공합니다.

모든 회사에 범위 지정 스토리지와 같은 새로운 변경 사항에 집중하는 데 전념하는 개발자가 충분하지는 않습니다. 따라서 Android 팀은 다음 Android 릴리스까지 새로운 범위가 지정된 저장소와 이전 기본 저장소 시스템을 모두 지원하기로 결정했습니다. 즉, API 레벨 29를 대상으로하는 앱 requestLegacyExternalStorage 은 이전 스토리지 시스템에서 작동하려면 매니페스트 파일에 플래그 를 포함해야 합니다. 보세요 :

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:requestLegacyExternalStorage="true"
    android:theme="@style/AppTheme">
</application>

앞서 말했듯이 범위 지정 저장소를 사용하여 미디어에 액세스하는 방법에는 두 가지가 있습니다.

  • 프로필 사진으로 저장하거나 이메일의 첨부 파일로 사용하기 위해 미디어 파일 만 필요한 앱입니다.
  • 모든 미디어 파일에 액세스해야하는 앱 (예 : 음악 플레이어 및 파일 탐색기).

범위가 지정된 저장소를 사용하면 사용자가 선택한 미디어 파일 만 필요로하거나 (저장소에서 데이터 읽기) 미디어 파일을 저장소에 저장 (파일 쓰기)하는 앱이 쉽게 사용할 수 있습니다.

파일 읽기

여기서는를 사용하여 Intent사용자가 미디어 파일을 선택할 수있는 새 활동을 시작하고에서 onActivityResult파일을 가져올 수 있습니다 URI. 보세요 :

ACTION_OPEN_DOCUMENT 지정된 유형의 미디어 파일을 사용자에게 제공하는 활동을 시작하는 작업으로 사용되며 사용자 선택에 따라 데이터를 사용할 수 있습니다 onActivityResult(위에 표시된대로).

CATEGORY_OPENABLE 인 텐트에로 열 수있는 URI 만 필요함을 나타냅니다 contentResolver.

파일 쓰기

파일 읽기와 동일합니다. 의도를 시작하고 onActivityResult. 보세요 :

여기서 액션 유형을 제외하고는 모든 것이 위와 동일합니다. 우리가 사용하는 ACTION_CREATE_DOCUMENT 파일을 생성하고 되돌릴 수있는 시스템을 나타 내기 위해 URI 그것의, 그리고 우리는 또한 파일 형식을 지정해야합니다. 인 EXTRA_TITLE 텐트 의 플래그를 사용하여 파일 이름을 설정할 수도 있습니다.

시스템은이 파일을 앱의 개인 저장소 아래에 생성하므로 저장소 권한 없이도 파일에 액세스 할 수 있습니다. 이는 범위가 지정된 저장소의 놀라운 점입니다.

복잡한 사용법

음악 플레이어 및 파일 탐색기와 같은 앱의 경우 단일 파일에 액세스하는 것만으로는 기능이 충분하지 않습니다. READ_EXTERNAL_STORAGE 스토리지의 모든 파일에 액세스해야하므로 권한은 필수입니다. 다음 코드를 사용하여 파일 목록에 액세스 할 수 있습니다.

미디어 메타 데이터

범위가 지정된 저장소는 사용자의 위치 기록을 잠재적으로 노출 할 수있는 미디어의 메타 데이터를 보호하기위한 조치를 취했습니다. 따라서 범위 지정 저장소를 통해 액세스하는 미디어 파일은 앱에 필요한 권한이있는 경우에만 메타 데이터를 제공합니다.

읽어 주셔서 감사합니다.

Suggested posts

Spring Boot, JPA 및 Bazel을 사용하여 병렬화 가능한 통합 테스트 작성

Spring Boot, JPA 및 Bazel을 사용하여 병렬화 가능한 통합 테스트 작성

통합 테스트는 중요한 시나리오에서 구성 요소가 서로 적절하게 상호 작용하는지 확인하는 데 매우 중요합니다. Flexport에서는 통합 테스트를 정기적으로 사용하여 시스템의 여러 구성 요소 간의 상호 작용을 확인합니다.

좋은 습관을 만들고 유지하는 방법

장기적인 습관을 유지하기위한 생산성 팁

좋은 습관을 만들고 유지하는 방법

두 아이의 엄마가 된 후 일을 끝내기가 더 어려워졌습니다. 나는 한 작업에서 다음 작업으로 뛰어 들었고 하루가 끝날 때까지 아무것도하지 않았을 때 실망했습니다.

Related posts

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

Android 앱에서 멋진 맞춤형 목록 작성

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

이 기사에서는 항목을 다시 정렬 할 수있는 기능을 제공하는 RecyclerView를 구현하는 방법에 대해 알아 봅니다. 타사 라이브러리를 사용하지 않고이 작업을 수행 할 것입니다.

Google Play 인앱 리뷰

Google Play 인앱 리뷰

Google Play Core 라이브러리는 인앱 리뷰에 대한 지원을 추가하여 사용자가 앱이나 게임을 떠나지 않고도 평점과 리뷰를 제출할 수 있도록합니다. 이 문서는 메모장 앱 연구 사례를 통해 Android에서이 기능을 구현하는 방법과 Google Play 스토어에서 사용자의 가시성에 미치는 영향을 보여줍니다.

Android에서 나만의 AR 애플리케이션 만들기

Android에서 나만의 AR 애플리케이션 만들기

이 기사에서는 카메라에서 얼굴에 효과를주는 Android 애플리케이션을 실시간으로 작성하는 방법을 설명합니다. 여기서는 카메라 작업, 얼굴 찾기, 얼굴의 포인트 찾기 및 결과 그리기 등 모든 핵심 사항을 살펴 보겠습니다.

Gradle 종속성 : 메시 🤯

Gradle 종속성을 현명하게 관리하세요 !!

Gradle 종속성 : 메시 🤯

종속성이 증가 할 때마다 Gradle 파일을 관리하기가 어려워집니다. 이 블로그에서는 종속성을 다른 파일로 이동하고 유사한 종속성을 그룹화하여 관리하려고합니다.