Android 11 ma ukryty Kosz na usunięte zdjęcia i filmy

W systemie Android 11 aplikacje mogą sugerować przeniesienie usuniętych zdjęć i filmów do ukrytego kosza. Dzięki temu elementy znajdujące się w koszu będą tymczasowo przechowywane na urządzeniu.

Google próbuje zapanować nad wymykającą się spod kontroli sytuacją w zakresie przechowywania aplikacji, korzystając z opcji „Magazyn o ograniczonym zakresie”. Pamięć o określonym zakresie została wprowadzona w systemie Android 10 ale od tego czasu został zmieniony kilka razy od czasu debiutu ze względu na to, jak dramatycznie wpływa na dostęp do pamięci dla wielu Androidów Aplikacje. Google wymusza przechowywanie w ramach zakresu w przypadku aplikacji przeznaczonych dla poziomu interfejsu API 30, czyli najnowszego poziomu interfejsu API pokrywającego się z systemem Android 11.

Zamiast próbować wyjaśnij jeszcze raz pamięć o określonym zakresie, oto grafika z witryny Google „Wszystko, co dotyczy prywatności w Androidzie 11” rozmowa podsumowująca wpływ ograniczonej pamięci masowej na dostęp do pamięci dla aplikacji w systemie Android 11.

Źródło: Google

Jedną z ciekawszych zmian w dostępie do pamięci masowej, która do tej pory umykała uwadze, jest wprowadzenie nowego mechanizmu „śmieciowania”. Ta funkcja jest szczegółowo opisana w „Dostęp do pamięci w systemie Android 11„wideo. Zasadniczo aplikacje korzystające z API MediaStore może wyrzucić plik do kosza zamiast go usuwać, aby dać użytkownikowi szansę na późniejsze odzyskanie pliku. Google porównuje tę funkcję do Kosza na komputerach PC, z tą różnicą, że kosz w systemie Android jest domyślnie ukryty. Google twierdzi, że aplikacje z uprawnieniami do edycji plików znajdujących się w koszu lub żądające zgody użytkownika mogą jednak wyświetlać elementy z kosza. Elementy umieszczone w koszu są automatycznie usuwane przez system Android po 30 dniach.

Android 11 wymaga również, aby aplikacje uzyskały zgodę użytkownika przed zmodyfikowaniem plików multimedialnych, których aplikacja nie jest właścicielem. Kolejną nową funkcją, która została dodana, są „ulubione”, dzięki którym aplikacje multimedialne mogą dodawać „ulubione” pliki status do wyznaczonych elementów multimedialnych, aby inne aplikacje multimedialne wiedziały, że użytkownik przegląda te elementy jako ważny. Na przykład, jeśli użytkownik zaznaczy element w aplikacji galerii, inne aplikacje multimedialne zobaczą, że ten element został dodany do ulubionych.

Chociaż rozmowa Google nie pokazuje przykładu nowej koncepcji kosza w MediaStore, interfejs API jest dostępny od pierwszej wersji deweloperskiej Androida 11 Preview. Deweloper Yuriy Mysochenko opublikował plik artykuł na Medium w lutym omawiał nowy interfejs API i zademonstrował interfejs API w przykładowej aplikacji, jak pokazano poniżej:

Nowe API MediaStore Trash w Androidzie 11. Kredyty: Jurij Mysoczenko.

W tej wersji demonstracyjnej aplikacja pytała użytkownika, czy chce przenieść zdjęcie do kosza, co spowodowałoby tymczasowe usunięcie zdjęcia z galerii. Po 7 dniach zdjęcie zostanie trwale usunięte z magazynu. Googler Roxanna Aliabadi wspomina, że ​​system operacyjny przechowuje elementy w koszu przez 30 dni, więc 7-dniowy limit przechowywania prawdopodobnie został zwiększony od czasu pierwszej wersji Developer Preview.

Programiści zainteresowani wdrożeniem tego interfejsu API mogą już teraz zapoznać się z dokumentacją w witrynie dla programistów Androida. Aplikacje multimedialne mogą tworzyć PendingIntent o nazwie utwórz żądanie kosza aby poprosić użytkownika o wyrzucenie elementu do kosza, co następnie dodaje flagę IS_TRASHED wskazując, że element multimedialny został umieszczony w koszu. Elementy usunięte z kosza są przechowywane przez system operacyjny do czasu DATE_EXPIRES, po czym są trwale usuwane z pamięci. Aplikacje multimedialne wysyłające zapytania do MediaStore muszą jawnie wysyłać zapytania o użycie elementów znajdujących się w koszu QUERY_ARG_MATCH_TRASHED ponieważ elementy wyrzucone do kosza są domyślnie odfiltrowywane z operacji.

Możesz (i powinieneś) wysłuchać tej pełnej dyskusji na temat Scoped Storage, jeśli Twoja aplikacja zajmuje się dostępem do pamięci: