Aktualizacje miejsca na dane w Androidzie 11

Android 11 (poziom API 30) jeszcze bardziej ulepsza platformę, zapewniając lepszą ochronę danych użytkownika i aplikacji w pamięci zewnętrznej. Ta wersja wprowadza kilka ulepszeń, takich jak dostęp do surowych ścieżek plików, operacje zbiorcze na multimediach i zaktualizowany interfejs Storage Access Framework.

W tej wersji wprowadziliśmy też ulepszenia w zakresie ograniczonego dostępu do miejsca na dane, co ułatwia deweloperom realizowanie przypadków użycia związanych z miejscem na dane po przejściu na ten model.

Wymuszanie ograniczonego dostępu do miejsca na dane

Aplikacje, które działają na Androidzie 11, ale są kierowane na Androida 10 (poziom API 29), nadal mogą prosić o requestLegacyExternalStorage atrybut. Ta flaga pozwala aplikacjom tymczasowo zrezygnować ze zmian związanych z ograniczonym dostępem do miejsca na dane, 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.

Zachowanie zgodności z Androidem 10

Jeśli Twoja aplikacja rezygnuje z ograniczonego dostępu do miejsca na dane, gdy działa na urządzeniach z Androidem 10, zalecamy, aby w pliku manifestu aplikacji nadal ustawiać wartość requestLegacyExternalStorage na true. Dzięki temu aplikacja będzie działać zgodnie z oczekiwaniami na urządzeniach z Androidem 10.

Migracja danych do katalogów widocznych podczas korzystania z ograniczonego dostępu do miejsca na dane

Jeśli Twoja aplikacja korzysta ze starszego modelu miejsca na dane i była wcześniej kierowana na Androida 10 lub starszego, możesz przechowywać dane w katalogu, do którego aplikacja nie ma dostępu, gdy włączony jest model ograniczonego dostępu do miejsca na dane. Zanim zaczniesz kierować aplikację na Androida 11, przenieś dane do katalogu zgodnego z ograniczonym dostępem do miejsca na dane.

Testowanie ograniczonego dostępu do miejsca na dane

Aby włączyć ograniczony dostęp do miejsca na dane w aplikacji, niezależnie od docelowej wersji pakietu SDK i wartości flagi manifestu, włącz te flagi zgodności aplikacji:

Aby wyłączyć ograniczony dostęp do miejsca na dane i zamiast tego używać starszego modelu miejsca na dane, wyłącz obie flagi.

Zarządzanie pamięcią urządzenia

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

  1. Sprawdź, czy jest wystarczająco dużo wolnego miejsca, wywołując działanie intencji ACTION_MANAGE_STORAGE.
  2. Jeśli na urządzeniu nie ma wystarczająco dużo wolnego 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 w pamięci zewnętrznej. Aby uzyskać dostęp do katalogu udostępnianego przez system, wywołaj funkcję getExternalFilesDirs().

Dostęp do plików multimedialnych

Aby ułatwić dostęp do multimediów przy jednoczesnym zachowaniu prywatności użytkowników, w Androidzie 11 dodaliśmy te funkcje:

Wykonywanie operacji zbiorczych

Aby zapewnić spójność na różnych urządzeniach i zwiększyć wygodę użytkowników, w Androidzie 11 dodaliśmy kilka metod, które ułatwiają zarządzanie grupami plików multimedialnych.

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

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

  • interfejs API File.
  • biblioteki natywne, takie jak fopen().

Dostęp do danych z innych aplikacji

Aby chronić prywatność użytkowników, w przypadku urządzeń z Androidem 11 lub nowszym system dodatkowo ogranicza dostęp aplikacji do prywatnych katalogów innych aplikacji.

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

Android 9 (poziom API 28) zaczął ograniczać, które aplikacje mogą udostępniać pliki w swoich katalogach danych w pamięci wewnętrznej innym aplikacjom. Aplikacje kierowane na Androida 9 lub nowszego nie mogą udostępniać plików w swoich katalogach danych .

Android 11 rozszerza to ograniczenie. Jeśli Twoja aplikacja jest kierowana na Androida 11, nie może uzyskiwać dostępu do plików w katalogu danych innej aplikacji, nawet jeśli ta aplikacja jest kierowana na Androida 8.1 (poziom API 27) lub starszego i udostępnia pliki w swoim katalogu danych do odczytu.

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 innym katalogu dedykowanym dla aplikacji w pamięci zewnętrznej.

Ograniczenia dostępu do dokumentów

Aby dać deweloperom czas na testowanie, te zmiany związane z 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 intencji ACTION_OPEN_DOCUMENT_TREE , aby prosić o dostęp do tych katalogów:

  • katalog główny woluminu pamięci wewnętrznej;
  • katalog główny każdego woluminu karty SD, który producent urządzenia uważa za niezawodny, niezależnie od tego, czy karta jest emulowana czy wyjmowana. Niezawodny wolumin to taki, do którego aplikacja może uzyskać dostęp w większości przypadków;
  • katalog Download.

Dostęp do plików

Nie możesz już używać działania intencji ACTION_OPEN_DOCUMENT_TREE ani ACTION_OPEN_DOCUMENT , aby prosić 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ę w działaniu, wykonaj te czynności:

  1. Wywołaj intencję z działaniem ACTION_OPEN_DOCUMENT. Sprawdź, czy nie wyświetlają się katalogi 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 polecenia powiązany z tym katalogiem jest wyszarzony.

Uprawnienia

W Androidzie 11 wprowadziliśmy te zmiany związane z uprawnieniami do miejsca na dane.

Kierowanie na dowolną wersję

W pierwszym oknie pojawi się link o nazwie Zezwól w ustawieniach.
Rysunek 1. Okno wyświetlane, gdy aplikacja korzysta z ograniczonego dostępu do miejsca na dane i prosi o uprawnienia READ_EXTERNAL_STORAGE.

Te zmiany zaczną obowiązywać w Androidzie 11 niezależnie od docelowej wersji pakietu SDK aplikacji:

  • Uprawnienia w czasie działania (aplikacji) Miejsce na dane zostały zmienione na Pliki i & multimedia.
  • Jeśli Twoja aplikacja nie zrezygnowała z ograniczonego dostępu do miejsca na dane i prosi o READ_EXTERNAL_STORAGE uprawnienia, użytkownicy zobaczą inne okno niż w Androidzie 10. Okno informuje, że aplikacja prosi o dostęp do zdjęć i multimediów, jak pokazano na rysunku 1.

    Użytkownicy mogą sprawdzić, które aplikacje mają uprawnienia READ_EXTERNAL_STORAGE , w ustawieniach systemu. Na stronie Ustawienia > Prywatność > Menedżer uprawnień > Pliki i multimedia każda aplikacja, która ma te uprawnienia, jest wymieniona w sekcji Dozwolone dla 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 odczytywać i zapisywać wszystkie pliki w pamięci współdzielonej za pomocą tej aplikacji, musisz mieć uprawnienia dostępu do wszystkich plików access.

Kierowanie na Androida 11

Jeśli Twoja aplikacja jest kierowana na Androida 11, uprawnienia WRITE_EXTERNAL_STORAGE i uprzywilejowane uprawnienia WRITE_MEDIA_STORAGE nie zapewniają już dodatkowego dostępu.

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

Dostęp do wszystkich plików

Większość aplikacji, które wymagają dostępu do pamięci współdzielonej, może stosować sprawdzone metody udostępniania plików multimedialnych i plików innych niż multimedialne. Niektóre aplikacje mają jednak podstawowy przypadek użycia, który wymaga szerokiego dostępu do plików na urządzeniu, ale nie mogą tego zrobić skutecznie przy użyciu sprawdzonych metod związanych z miejscem na dane, które zapewniają prywatność. W takich sytuacjach Android udostępnia 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.

Dodatkowe materiały

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

Posty na blogu

Filmy