Android Q : 범위가 지정된 스토리지의 SQLite 데이터베이스


13

Android Q에는 새로운 범위 스토리지 기능이 도입되었습니다 .

Android 10 (API 레벨 29) 이상을 대상으로하는 앱에는 기본적으로 외부 스토리지 또는 범위 스토리지에 대한 범위 액세스가 제공됩니다. 이러한 앱은 외부 저장소의 앱별 디렉토리뿐만 아니라 앱이 생성 한 특정 유형의 미디어에만 액세스 할 수 있습니다.

외부 저장소에 SQLite 데이터베이스를 만드는 응용 프로그램이 있습니다. 예를 들어 응용 프로그램이 데이터베이스를 여전히 제거 할 때 나중에 복구로 사용하거나 Android 장치 외부에서 사용할 수 있습니다 (PC라고합시다)

Android Q와 동일한 효과를 얻으려면 어떻게해야합니까? 데이터베이스가 외부 공용 디렉토리에 저장된 경우 더 정확하게-표준을 사용 하여이 데이터베이스를 어떻게 읽을 수 SQLiteOpenHelper있습니까?


적어도 SQLite 프레임 워크 나 지원 SQLite AndroidX API (Room에서 사용하는 API)로는 할 수 없습니다. 사용자 정의 컴파일 된 SQLite 라이브러리와 파일 설명자를 사용하여 모호한 솔루션을 배제 할 수 없습니다.
CommonsWare

아니 아니. noo-oooo-oooo! 믿을 수 없어, 공개 디렉토리에있는 SQLite 데이터베이스를 사용하는 방법이 있어야합니다 ...
Barmaley Red Star

앱을 시작하고 종료 할 때 데이터베이스 파일의 복사본을 만들 수 있습니다. 미디어 저장소를 사용하면 권한이 필요하지 않습니다.
blackapps

@blackapps, 다른 접근 방식도 기쁘지만이 옵션을 이해해야합니다. 외부 저장소의 SQLite 데이터베이스에 직접 액세스
Barmaley Red Star

데이터베이스 파일 복구에 자동 백업을 사용할 수 있습니다.
예술

답변:


3

https://developer.android.com/training/data-storage/compatibility 문서에서 솔루션을 사용해보십시오.

  • 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:requestLegacyExternalStorage이 사라질까 두렵습니다 .
Barmaley Red Star

내가 이해할 때 사라지는 것에 대해, 우리는 너무 오래 기다리지 않을 것입니다. Scoped Storage will be required in next year’s major platform release for all apps, independent of target SDK level. Android Q 범위 스토리지 : 모범 사례 및 업데이트
Merov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.