Aktualizacje dotyczące miejsca na dane w Androidzie 11

Android 11 (poziom interfejsu API 30) jeszcze bardziej ulepsza platformę, zapewniając lepszą ochronę danych aplikacji i użytkowników w pamięci zewnętrznej. W tej wersji wprowadziliśmy kilka ulepszeń, takich jak dostęp do nieprzetworzonych plików ścieżki, operacje edycji zbiorczej multimediów oraz zaktualizowany interfejs Storage Access Framework.

Ta wersja zawiera też ulepszenia dotyczące ograniczonego miejsca na dane, co ułatwia deweloperom wykorzystanie przypadków użycia miejsca na dane po przejściu na ten model miejsca na dane.

Egzekwowanie limitu miejsca na dane

Aplikacje działające na Androidzie 11, ale kierowane na Androida 10 (poziom interfejsu API 29), nadal mogą prosić o atrybut requestLegacyExternalStorage. Ta flaga umożliwia aplikacjom tymczasowe zrezygnowanie ze zmian związanych z pamięcią o ograniczonym zakresie, takich jak przyznawanie dostępu do różnych katalogów i różnych typów plików multimedialnych. Gdy zaktualizujesz aplikację, aby była kierowana na Androida 11, system zignoruje flagę requestLegacyExternalStorage.

Zgodność z Androidem 10

Jeśli Twoja aplikacja działa na urządzeniach z Androidem 10 i wyłącza opcję korzystania z pamięci zakresu, zalecamy dalsze ustawienie opcji requestLegacyExternalStorage na true w pliku manifestu aplikacji. Dzięki temu aplikacja może działać zgodnie z oczekiwaniami na urządzeniach z Androidem 10.

Przeprowadź migrację danych do katalogów, które są widoczne, gdy korzystasz z pamięci zakresu

Jeśli Twoja aplikacja używa starszego modelu pamięci masowej i była wcześniej kierowana na Androida 10 lub starszego, dane mogą być przechowywane w katalogu, do którego aplikacja nie ma dostępu, gdy włączony jest model ograniczonego miejsca na dane. Zanim ustawisz kierowanie na Androida 11, przenieś dane do katalogu zgodnego z pamięcią zakresu.

Testuj pamięć w zakresie

Aby włączyć w swojej aplikacji ograniczone miejsce na dane (niezależnie od docelowej wersji pakietu SDK i wartości flag pliku manifestu), włącz te flagi zgodności aplikacji:

Aby wyłączyć miejsce na dane o ograniczonym zakresie i zamiast tego korzystać ze starszego modelu przechowywania danych, wyłącz obie flagi.

Zarządzanie miejscem na urządzeniu

Począwszy od Androida 11 aplikacje korzystające z modelu ograniczonego miejsca na dane mają dostęp tylko do plików pamięci podręcznej swoich aplikacji. Jeśli Twoja aplikacja musi zarządzać pamięcią urządzenia, postępuj zgodnie z instrukcjami wysyłania zapytań o wolne miejsce.

  1. Sprawdź, czy jest wolne miejsce, wywołując działanie intencji ACTION_MANAGE_STORAGE.
  2. Jeśli na urządzeniu nie ma wystarczająco dużo miejsca, poproś użytkownika o zgodę na wyczyszczenie wszystkich pamięci podręcznych. Aby to zrobić, wywołaj działanie intencji ACTION_CLEAR_APP_CACHE.

Katalog aplikacji w pamięci zewnętrznej

Od Androida 11 aplikacje nie mogą tworzyć własnego katalogu przeznaczonego do aplikacji w pamięci zewnętrznej. Aby uzyskać dostęp do katalogu udostępnianego przez system Twojej aplikacji, wywołaj getExternalFilesDirs().

Dostęp do plików multimedialnych

Aby ułatwić dostęp do multimediów i zachować prywatność użytkownika, Android 11 dodaje te funkcje.

Wykonywanie operacji wsadowych

Aby zapewnić spójność między urządzeniami i wygodę użytkowników, Android 11 dodaje kilka metod, które ułatwiają zarządzanie grupami plików multimedialnych.

Dostęp do plików za pomocą bezpośrednich ścieżek do plików i bibliotek natywnych

Aby zapewnić płynniejsze działanie aplikacji z bibliotekami multimediów innych firm, Android 11 umożliwia korzystanie z interfejsów API innych niż MediaStore API do uzyskiwania dostępu do plików multimedialnych z pamięci współdzielonej za pomocą bezpośrednich ścieżek do plików. Te interfejsy API to:

  • interfejs API File,
  • Biblioteki natywne, np. fopen().

Dostęp do danych z innych aplikacji

Aby chronić prywatność użytkowników, na urządzeniach z Androidem 11 lub nowszym system jeszcze bardziej ogranicza dostęp aplikacji do katalogów prywatnych innych aplikacji.

Dostęp do katalogów danych w pamięci wewnętrznej

Android 9 (poziom interfejsu API 28) zaczął ograniczać możliwość udostępniania plików na całym świecie do plików w katalogach danych w pamięci wewnętrznej innym aplikacjom. Aplikacje kierowane na Androida 9 lub nowszego nie mogą udostępniać plików w katalogach danych jako dostępnych z całego świata.

To ograniczenie jest rozszerzane na Androida 11. Jeśli Twoja aplikacja jest kierowana na Androida 11, nie będzie miała dostępu do plików w katalogu danych innej aplikacji, nawet jeśli jest kierowana na Androida 8.1 (poziom interfejsu API 27) lub niższy i udostępniła pliki w katalogu danych w całym świecie.

Dostęp do katalogów aplikacji w pamięci zewnętrznej

Na Androidzie 11 aplikacje nie mają już dostępu do plików w żadnym katalogu dla określonej aplikacji w pamięci zewnętrznej.

Ograniczenia dostępu do dokumentów

Aby dać deweloperom czas na testy, poniższe zmiany związane z platformą Storage Access Framework (SAF) zostaną zastosowane tylko w przypadku aplikacji kierowanych na Androida 11 lub nowszego.

Dostęp do katalogów

Nie możesz już korzystać z działania intencji ACTION_OPEN_DOCUMENT_TREE, aby poprosić o dostęp do tych katalogów:

  • Katalog główny woluminu pamięci wewnętrznej.
  • Katalog główny woluminu karty SD, który producent urządzenia uznaje za niezawodny, bez względu na to, czy karta jest emulowana czy wyjmowana. Niezawodny wolumin to taki, do którego aplikacja ma zazwyczaj dostęp przez większość czasu.
  • Katalog Download.

Dostęp do plików

Nie możesz już używać działania ACTION_OPEN_DOCUMENT_TREE ani ACTION_OPEN_DOCUMENT intencji, aby poprosić użytkownika o wybranie poszczególnych plików z tych katalogów:

  • Katalog Android/data/ i wszystkie podkatalogi.
  • Katalog Android/obb/ i wszystkie podkatalogi.

Testowanie zmiany

Aby przetestować tę zmianę działania, wykonaj te czynności:

  1. Wywołaj intencję za pomocą działania ACTION_OPEN_DOCUMENT. Sprawdź, czy nie ma katalogów Android/data/ i Android/obb/.
  2. Wykonaj jedną z tych czynności:
  3. Wywołaj intencję za pomocą działania ACTION_OPEN_DOCUMENT_TREE. Sprawdź, czy wyświetla się katalog Download, a przycisk polecenia powiązany z katalogiem jest wyszarzony.

Uprawnienia

Android 11 wprowadza poniższe zmiany związane z uprawnieniami do przechowywania danych.

Kieruj na dowolną wersję

W pierwszym oknie znajduje się link „Zezwól” w ustawieniach.
Rysunek 1. Okno wyświetlane, gdy aplikacja używa pamięci zakresu i prosi o uprawnienie READ_EXTERNAL_STORAGE.

W Androidzie 11 obowiązują te zmiany niezależnie od docelowej wersji pakietu SDK aplikacji:

  • Nazwa uprawnienia w czasie działania Pamięć wewnętrzna została zmieniona na Pliki i multimedia.
  • Jeśli Twoja aplikacja nie zrezygnowała z ograniczonego miejsca na dane i poprosi o uprawnienie READ_EXTERNAL_STORAGE, użytkownicy zobaczą inne okno dialogowe niż Android 10. Okno dialogowe wskazuje, że aplikacja prosi o dostęp do zdjęć i multimediów, jak widać na rys. 1.

    Użytkownicy mogą sprawdzić, które aplikacje mają uprawnienie READ_EXTERNAL_STORAGE, w ustawieniach systemu. Na stronie Ustawienia > Prywatność > Menedżer uprawnień > Pliki i multimedia każda aplikacja, która ma odpowiednie uprawnienia, jest wymieniona w sekcji Dozwolone w przypadku wszystkich plików. Jeśli Twoja aplikacja jest kierowana na Androida 11, pamiętaj, że ten dostęp do „wszystkich plików” jest tylko do odczytu. Aby móc odczytywać i zapis we wszystkich plikach w pamięci współdzielonej za pomocą tej aplikacji, musisz mieć uprawnienie dostęp do wszystkich plików.

Kierowanie na Androida 11

Jeśli Twoja aplikacja jest kierowana na Androida 11, zarówno uprawnienie WRITE_EXTERNAL_STORAGE, jak i WRITE_MEDIA_STORAGEz podwyższonymi uprawnieniami nie zapewnia już żadnego dodatkowego dostępu.

Pamiętaj, że na urządzeniach z Androidem 10 (poziom interfejsu API 29) lub nowszym aplikacja może współtworzyć dobrze zdefiniowane kolekcje multimediów, np. MediaStore.Downloads, bez konieczności żądania uprawnień związanych z miejscem na dane. Dowiedz się więcej o tym, jak podczas pracy z plikami multimedialnymi w aplikacji wymagać tylko niezbędnych uprawnień.

Dostęp do wszystkich plików

Większość aplikacji, które wymagają dostępu do pamięci współdzielonej, jest zgodna ze sprawdzonymi metodami udostępniania plików multimedialnych i plików innych niż multimedialne. Część aplikacji jest jednak w głównych przypadkach użycia wymagających szerokiego dostępu do plików na urządzeniu, ale nie jest to możliwe wydajnie z wykorzystaniem sprawdzonych metod dotyczących przechowywania danych zapewniających ochronę prywatności. W takich sytuacjach Android zapewnia specjalny dostęp do aplikacji o nazwie Dostęp do wszystkich plików. Więcej informacji znajdziesz w przewodniku dotyczącym zarządzania wszystkimi plikami na urządzeniu pamięci masowej.

Dodatkowe materiały

Więcej informacji o zmianach dotyczących miejsca na dane w Androidzie 11 znajdziesz w tych materiałach:

Posty na blogu

Filmy