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.