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 ograniczonego miejsca na dane, 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. Ten parametr umożliwia aplikacjom tymczasowe wyłączenie się z zmian związanych z ograniczonym dostępem do pamięci, takich jak przyznawanie dostępu do różnych katalogów i różnych typów plików multimedialnych. Po zaktualizowaniu aplikacji do wersji kierowanej na Androida 11 system zignoruje flagę requestLegacyExternalStorage.

Utrzymywanie zgodności z Androidem 10

Jeśli Twoja aplikacja nie korzysta z ograniczonego miejsca na dane podczas działania na urządzeniach z Androidem 10, zalecamy, aby w pliku manifestu aplikacji ustawienie requestLegacyExternalStorage było nadal ustawione na true. Dzięki temu aplikacja będzie działać zgodnie z oczekiwaniami na urządzeniach z Androidem 10.

Przenoszenie danych do katalogów widocznych podczas korzystania z ograniczonego miejsca na dane

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.

Testowanie ograniczonego dostępu do miejsca na dane

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żyć 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 dostępne 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

Począwszy 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 dla Twojej aplikacji, 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, 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 masowej 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, aby inne aplikacje nie mogły ich odczytać. Aplikacje kierowane na Androida 9 lub nowszego nie mogą udostępniać pliki w katalogach danych.

Android 11 rozszerza to ograniczenie. Jeśli Twoja aplikacja jest kierowana na Androida 11, nie może uzyskać dostępu do plików w katalogu danych innej aplikacji, nawet jeśli ta inna aplikacja jest kierowana na Androida 8.1 (poziom interfejsu API 27) lub niższego i ma pliki w katalogu danych ustawione jako dostępne do odczytu przez wszystkich.

Dostęp do katalogów aplikacji na dysku zewnętrznym

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 każdej karty SD, którą producent urządzenia uznaje za wiarygodną, niezależnie od tego, czy karta jest emulowana, czy wymienna. Wolumin niezawodny to taki, do którego aplikacja może uzyskać 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ę z działaniem ACTION_OPEN_DOCUMENT. Sprawdź, czy katalogi Android/data/Android/obb/ nie są widoczne.
  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:

  • Uprawnienie Pamięć zostało zmienione na Pliki i multimedia.
  • Jeśli Twoja aplikacja nie wyklucza się z ograniczonego miejsca na dane i prosi o uprawnienia READ_EXTERNAL_STORAGE, użytkownicy zobaczą inne okno niż w Androidzie 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ą uprawnienia 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.

Docelowy Android 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 konieczne 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ć skutecznie, korzystając ze sprawdzonych metod dotyczących pamięci, które sprzyjają prywatności. W takich sytuacjach Android udostępnia specjalne uprawnienie 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