Aktualizacje 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 na zewnętrznym urządzeniu pamięci masowej. Ta wersja wprowadza kilka ulepszeń, takich jak dostęp do ścieżki pliku w postaci binarnej, operacje zbiorczej edycji multimediów i zaktualizowany interfejs Storage Access Framework.

Ta wersja zawiera też ulepszenia miejsca na dane ograniczone, które ułatwiają deweloperom realizację użytków z miejsca na dane po przejściu na ten model.

Egzekwowanie ograniczonego miejsca na dane

Aplikacje, które działają na Androidzie 11, ale są 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.

Utrzymywanie zgodności 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 i wcześniej kierowana była na Androida 10 lub niższą wersję, możesz przechowywać dane w katalogu, do którego aplikacja nie ma dostępu, gdy włączony jest model ograniczonego miejsca na dane. Zanim zaczniesz kierować aplikację na Androida 11, przenieś dane do katalogu zgodnego z ograniczonym miejscem na dane.

Testuj pamięć w zakresie

Aby włączyć ograniczoną pamięć w aplikacji, niezależnie od wersji docelowego pakietu SDK i wartości flagi w pliku manifestu, włącz te flagi zgodności aplikacji:

Aby wyłączyć ograniczoną pamięć i zamiast niej używać starszego modelu pamięci, usuń oba flagi.

Zarządzanie miejscem na urządzeniu

Od Androida 11 aplikacje korzystające z modelu ograniczonego miejsca na dane mają dostęp tylko do własnych plików pamięci podręcznej. Jeśli aplikacja musi zarządzać pamięcią urządzenia, postępuj zgodnie z instrukcjami dotyczącymi wyszukiwania wolnego miejsca.

  1. Sprawdź, czy jest wolne miejsce, wywołując działanie intencji ACTION_MANAGE_STORAGE.
  2. Jeśli na urządzeniu jest za mało wolnego miejsca, poproś użytkownika o zgodę na wyczyszczenie całej pamięci podręcznej. Aby to zrobić, wywołaj działanie intencyjne ACTION_CLEAR_APP_CACHE.

Katalog aplikacji na pamięci zewnętrznej

Od Androida 11 aplikacje nie mogą tworzyć własnych katalogów na dysku zewnętrznym. 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 przy jednoczesnym zachowaniu prywatności użytkowników, Android 11 oferuje te funkcje:

Wykonywanie operacji zbiorczych

Aby zapewnić spójność na różnych urządzeniach i większy komfort użytkowników, Android 11 wprowadza kilka metod ułatwiających zarządzanie grupami plików multimedialnych.

uzyskiwać dostęp do plików za pomocą bezpośrednich ścieżek plików i bibliotek natywnych;

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

  • Interfejs API File.
  • Biblioteki natywne, takie jak 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 prywatnych katalogów innych aplikacji.

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

W Androidzie 9 (poziom API 28) zaczęto ograniczać dostęp aplikacji do plików w katalogach danych na wewnętrznej pamięci masowej, które są dostępne dla innych aplikacji. Aplikacje kierowane na Androida 9 lub nowszego nie mogą udostępniać plików w katalogach danych.

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

W Androidzie 11 aplikacje nie mogą już uzyskiwać dostępu do plików w żadnym specjalnym katalogu innej aplikacji w pamięci zewnętrznej.

Ograniczenia dostępu do dokumentów

Aby dać deweloperom czas na przetestowanie, podane niżej zmiany związane z ramami Storage Access Framework (SAF) zaczną obowiązywać tylko wtedy, gdy Twoja aplikacja będzie kierowana na Androida 11 lub nowszego.

Dostęp do katalogów

Nie możesz już używać działania intencyjnego ACTION_OPEN_DOCUMENT_TREE do żądania dostępu 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 intencyjnego ACTION_OPEN_DOCUMENT_TREE ani ACTION_OPEN_DOCUMENT, 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ę zachowania, 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ę z działaniem ACTION_OPEN_DOCUMENT_TREE. Sprawdź, czy wyświetla się katalog Download, a przycisk działania powiązany z tym katalogiem jest wyszarzony.

Uprawnienia

Android 11 wprowadza następujące zmiany dotyczące uprawnień do dostępu do pamięci:

Kierowanie na dowolną wersję

Pierwsze okno zawiera link o nazwie Zezwalaj w ustawieniach
Rysunek 1. Okno wyświetlane, gdy aplikacja używa ograniczonego dostępu do miejsca na dane i prosi o uprawnienia READ_EXTERNAL_STORAGE.

Na Androidzie 11 wchodzą w życie te zmiany, niezależnie od wersji docelowego 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 informuje, że aplikacja prosi o dostęp do zdjęć i multimediów (patrz 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 dane uprawnienie, jest wymieniona w sekcji Dozwolone dla wszystkich plików. Jeśli Twoja aplikacja jest kierowana na Androida 11, pamiętaj, że dostęp do „wszystkich plików” jest ograniczony do odczytu. Aby odczytywaćzapisywać wszystkie pliki w wspólnej pamięci masowej za pomocą tej aplikacji, musisz mieć uprawnienia dostępu do wszystkich plików.

Kierowanie na Androida 11

Jeśli Twoja aplikacja jest kierowana na Androida 11, uprawnienia WRITE_EXTERNAL_STORAGEWRITE_MEDIA_STORAGE nie zapewniają już żadnego dodatkowego dostępu.

Pamiętaj, że na urządzeniach z Androidem 10 (poziom interfejsu API 29) lub nowszym Twoja aplikacja może dodawać treści do dobrze zdefiniowanych kolekcji multimediów, takich jak MediaStore.Downloads, bez konieczności żądania żadnych uprawnień związanych z pamięcią. Dowiedz się więcej o tym, jak prosić tylko o wymagane uprawnienia podczas pracy z plikami multimedialnymi w aplikacji.

Dostęp do wszystkich plików

Większość aplikacji, które wymagają dostępu do udostępnionego miejsca na dane, może stosować sprawdzone metody udostępniania plików multimedialnychudostępniania plików niemultimedialnych. Niektóre aplikacje mają jednak główny przypadek użycia, który wymaga szerokiego dostępu do plików na urządzeniu, ale nie mogą tego robić efektywnie, korzystając ze sprawdzonych metod dotyczących pamięci, które sprzyjają 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 Zarządzanie wszystkimi plikami na urządzeniu pamięci masowej.

Dodatkowe materiały

Więcej informacji o zmianach w miejscu na dane w Androidzie 11 znajdziesz w tych materiałach:

Posty na blogu

Filmy