Zarządzanie wszystkimi plikami na urządzeniu pamięci masowej

Większość aplikacji, które wymagają dostępu do pamięci współdzielonej, działa najlepiej metody udostępniania multimediów pliki i udostępnianie materiałów innych niż multimedialne . Jednak niektóre ma główny przypadek użycia, który wymaga szerokiego dostępu do plików na urządzeniu, nie może uzyskać do nich dostępu z zastosowaniem sprawdzonych metod dotyczących miejsca na dane zapewniającego ochronę prywatności. Android zapewnia specjalny dostęp do aplikacji, nazywany dostępem do wszystkich plików. w różnych sytuacjach.

Głównym przypadkiem użycia aplikacji antywirusowej może być na przykład regularne skanowanie. plików w różnych katalogach. Jeśli to skanowanie wymaga powtarzania interakcji użytkownika przy wyborze katalogów za pomocą systemowego selektora plików, nie są wygodne w obsłudze. w innych przypadkach użycia, takich jak aplikacje do zarządzania plikami, aplikacje do tworzenia i przywracania kopii zapasowych oraz do zarządzania dokumentami – wymagają podobnych zalety i wady dostępnych metodologii.

Poproś o dostęp do wszystkich plików

Aplikacja może poprosić użytkownika o dostęp do wszystkich plików, wykonując te czynności:

  1. Zadeklaruj parametr MANAGE_EXTERNAL_STORAGE uprawnienia użytkownika w pliku manifestu.
  2. Użyj ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION działanie intencji, które ma kierować użytkowników na stronę ustawień systemu, na której mogą ją włączyć wybierz opcję Zezwól na zarządzanie wszystkimi plikami.

Aby sprawdzić, czy Twoja aplikacja otrzymała uprawnienia MANAGE_EXTERNAL_STORAGE uprawnienia, wywołanie Environment.isExternalStorageManager()

Operacje dozwolone przez MANAGE_EXTERNAL_STORAGE

Uprawnienie MANAGE_EXTERNAL_STORAGE zapewnia te korzyści:

  • Uprawnienia do zapisu i odczytu wszystkich plików w domenie udostępnionych miejsca na dane.

  • Dostęp do zawartości MediaStore.Files.

  • dostęp do katalogu głównego dysku USB On-the-Go (OTG) i karty SD;

  • Dostęp z możliwością zapisu do wszystkich katalogów pamięci wewnętrznej z wyjątkiem /Android/data/, /sdcard/Android i większość podkatalogów /sdcard/Android Te uprawnienia do zapisu obejmują plik bezpośredni ścieżki dostępu.

    Aplikacje, którym przyznano to uprawnienie, nadal nie mają dostępu do katalogów należących do innych aplikacji, bo te katalogi występują jako podkatalogi Android/data/ w woluminu miejsca na dane.

Jeśli aplikacja ma uprawnienie MANAGE_EXTERNAL_STORAGE, będzie miała dostęp do tych elementów: plików i katalogów za pomocą Interfejs API MediaStore lub plik bezpośredni . Jeśli używasz tagu platforma dostępu do pamięci masowej, dostęp do pliku lub katalogu możesz uzyskać tylko wtedy, gdy możesz to zrobić bez ma uprawnienie MANAGE_EXTERNAL_STORAGE.

Wywołaj aktywność związaną z zarządzaniem miejscem na dane w innej aplikacji

Na Androidzie 12 (poziom interfejsu API 31) i nowszych wersjach aplikacje, które zawierają MANAGE_EXTERNAL_STORAGE uprawnienia i QUERY_ALL_PACKAGES uprawnień (takich jak aplikacje do zarządzania plikami) mogą używać getManageSpaceActivityIntent() do kierowania użytkowników do niestandardowego systemu zarządzania pokojem w innej aplikacji .

Metoda getManageSpaceActivityIntent() pobiera nazwę pakietu i tag żądania kodu i zwraca jeden z następujących elementów:

  • PendingIntent, jeśli aplikacja z atrybutem określona nazwa pakietu ma zdefiniowaną niestandardową „zarządzanie przestrzenią” działania. Plik aplikacja do zarządzania, która wywołała metodę getManageSpaceActivityIntent(), może wtedy wywołaj zwrócona intencję, aby przekierować użytkowników do aktywności niestandardowej.
  • null, jeśli aplikacja o podanej nazwie pakietu nie ma zdefiniowanego parametru „manage” spacja” działania.

Włącz MANAGE_EXTERNAL_STORAGE na potrzeby testowania

Aby sprawdzić, jak uprawnienie MANAGE_EXTERNAL_STORAGE wpływa na Twoją aplikację, może włączyć uprawnienia do testowania. Aby to zrobić, uruchom następujące polecenie na komputerze podłączonym do urządzenia testowego:

adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow

Powiadomienie z Google Play

Ta sekcja zawiera powiadomienia dla deweloperów, którzy publikują aplikacje w Google Play.

Aby ograniczyć szeroki dostęp do pamięci współdzielonej, Sklep Google Play zaktualizowaliśmy oceniać aplikacje kierowane na Androida 11 (poziom interfejsu API 30) lub nowszego oraz dostęp do wszystkich plików za pomocą uprawnienia MANAGE_EXTERNAL_STORAGE. Ta zasada i obowiązują od maja 2021 r.

Jeśli aplikacja jest kierowana na Androida 11 lub nowszego i zadeklaruje parametr MANAGE_EXTERNAL_STORAGE, Android Studio wyświetla ostrzeżenie, które co widać na rysunku 1. To ostrzeżenie informuje, że w Sklepie Google Play obowiązują która ogranicza możliwość korzystania z tego uprawnienia.

. Rysunek 1. Ostrzeżenie o licencji w Android Studio przypominające deweloperom o Zasady Google Play dotyczące aplikacji MANAGE_EXTERNAL_STORAGE uprawnienia.

Poproś o uprawnienie MANAGE_EXTERNAL_STORAGE tylko wtedy, gdy Twoja aplikacja nie mogą efektywnie korzystać z interfejsów API, które szanują prywatność użytkowników, takich jak Platforma dostępu lub Media Store API. Wykorzystanie aplikacji musi być zgodny z dozwolonymi zastosowaniami i musi być bezpośrednio powiązany z główną funkcjonalność aplikacji. Jeśli aplikacja zawiera przypadek użycia jak każda z tych sytuacji, prawdopodobnie będzie poprosić o Uprawnienie MANAGE_EXTERNAL_STORAGE:

  • Menedżery plików
  • Aplikacje do tworzenia i przywracania kopii zapasowych
  • Aplikacje antywirusowe
  • Aplikacje do zarządzania dokumentami
  • Wyszukiwanie plików na urządzeniu
  • Szyfrowanie dysku i plików
  • Migracja danych między urządzeniami