Czy istnieje proste wywołanie interfejsu API, które powiedziałoby mi, czy aplikacja działająca na Androidzie 10 lub nowszym musi korzystać z dostępu do Scoped Storage, czyli jeśli normalny dostęp do plików, czyli „Legacy Storage Storage” jest wyłączony? Pamiętaj, że nawet jeśli aplikacja w AndroidManifest.xml, sekcja zadeklarowała:
android:requestLegacyExternalStorage="true"
dostęp do pliku może nadal zostać zablokowany z powodu zmian zasad Google w przyszłości, więc testowanie tej wartości jest bezużyteczne. Jedyny sposób, jaki znalazłem, to przetestowanie, czy katalog główny pamięci zewnętrznej jest czytelny, ale w tym celu aplikacja musi najpierw poprosić o pozwolenie na przechowywanie, które jest bezużyteczne w przypadku jakichkolwiek innych rzeczy, jeśli starsza pamięć jest wyłączona.
public static boolean mustUseScopedStorage() {
// Impractical must first ask for useless Storage permission...
File exSD = Environment.getExternalStorageDirectory();
return !exSD.canRead(); // this test works only if Storage permission was granted.
}
Myślę, że kiedyś widziałem nowy interfejs API do wykrywania tego, ale nie mogę już znaleźć tego artykułu ...
an app running on Android 10 or later must use Scoped Storage access? Czy możesz wyjaśnić, co masz na myśli? Jakie masz na myśli funkcje? Wiem, że na przykład woluminy pamięci i Menedżer pamięci, które zostały przyniesione dla N, są już przestarzałe dla Q.