W Androidzie Q wprowadzono nową funkcję przechowywania Scoped , która mówi:
aplikacje, które są ukierunkowane na system Android 10 (poziom API 29) i wyższy, mają domyślnie dostęp do pamięci zewnętrznej lub pamięci masowej o zasięgu. Takie aplikacje mają dostęp tylko do katalogu specyficznego dla aplikacji w pamięci zewnętrznej, a także do określonych rodzajów multimediów utworzonych przez aplikację.
Mam swoją aplikację, która tworzy bazę danych SQLite w pamięci zewnętrznej, na przykład, gdy aplikacja odinstalowuje bazę danych i nadal może być używana jako odzyskiwanie lub poza urządzeniem z Androidem (powiedzmy na PC)
Jak powinienem osiągnąć ten sam efekt w Androidzie Q? Dokładniej, jeśli baza danych jest przechowywana w zewnętrznym katalogu publicznym - jak mogę odczytać tę bazę danych przy użyciu standardu SQLiteOpenHelper
?
Odpowiedzi:
Możesz spróbować użyć rozwiązania z dokumentacji:
https://developer.android.com/training/data-storage/compatibility
requestLegacyExternalStorage
natrue
w pliku manifestu aplikacji:źródło
android:requestLegacyExternalStorage
zniknie ...Scoped Storage will be required in next year’s major platform release for all apps, independent of target SDK level
. Android Q Scope Storage: najlepsze praktyki i aktualizacje