Android 11 umożliwia użytkownikom określanie bardziej szczegółowych uprawnień do lokalizacji, mikrofonu i aparatu. Ponadto system resetuje uprawnienia nieużywanych aplikacji kierowanych na Androida 11 lub nowszego. Aplikacje mogą też wymagać zaktualizowania deklarowanych uprawnień, jeśli korzystają z okna alertu systemowego lub odczytują informacje związane z numerami telefonów.
Jednorazowe zezwolenia
Od Androida 11, gdy aplikacja prosi o uprawnienia związane z lokalizacją, mikrofonem lub aparatem, w oknie z prośbą o uprawnienia wyświetla się opcja Tylko tym razem. Jeśli użytkownik wybierze tę opcję w oknie dialogowym, aplikacja otrzyma tymczasowe jednorazowe zezwolenie.
Więcej informacji o tym, jak system obsługuje jednorazowe zezwolenia.
Automatyczne resetowanie uprawnień nieużywanych aplikacji
Jeśli Twoja aplikacja jest kierowana na Androida 11 lub nowszego i nie jest używana przez kilka miesięcy, system chroni dane użytkownika, automatycznie resetując uprawnienia w czasie działania, które użytkownik przyznał Twojej aplikacji. Ta czynność ma taki sam efekt, jak gdyby użytkownik wyświetlił uprawnienia w ustawieniach systemu i zmienił poziom dostępu aplikacji na Odmów. Jeśli Twoja aplikacja stosuje sprawdzone metody wysyłania prośby o uprawnienia w czasie działania, nie musisz wprowadzać w niej żadnych zmian. Dzieje się tak, ponieważ gdy użytkownik korzysta z funkcji aplikacji, powinna ona sprawdzać, czy ma uprawnienia, których potrzebuje.
Więcej informacji o tym, jak system automatycznie resetuje uprawnienia nieużywanych aplikacji
Widoczność okna z prośbą o uprawnienia
Od Androida 11, jeśli użytkownik kliknie Odmów w przypadku określonego uprawnienia więcej niż raz od momentu zainstalowania aplikacji na urządzeniu, nie zobaczy okna z prośbą o uprawnienia, jeśli Twoja aplikacja ponownie poprosi o to uprawnienie. Działanie użytkownika oznacza „nie pytaj ponownie”. W poprzednich wersjach użytkownicy widzieli okno z prośbą o uprawnienia za każdym razem, gdy aplikacja prosiła o uprawnienia, chyba że użytkownik wcześniej zaznaczył pole lub opcję „Nie pytaj ponownie”. Ta zmiana w Androidzie 11 zniechęca do wielokrotnego wysyłania próśb o uprawnienia, których użytkownicy nie chcą przyznać.
Aby sprawdzić, czy aplikacja ma trwale odrzucone uprawnienia (na potrzeby debugowania i testowania), użyj tego polecenia:
adb shell dumpsys package PACKAGE_NAME
gdzie PACKAGE_NAME to nazwa pakietu do sprawdzenia.
Dane wyjściowe polecenia zawierają sekcje podobne do tych:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
Uprawnienia, które użytkownik odrzucił raz, są oznaczone flagą USER_SET.
Uprawnienia, które zostały trwale odrzucone przez dwukrotne kliknięcie Odmów , są
oznaczone flagą USER_FIXED.
Podczas testowania możesz zresetować te flagi, aby testerzy nie byli zaskoczeni, gdy nie wyświetli się okno z prośbą o uprawnienia. Aby to zrobić, użyj tego polecenia:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME to nazwa uprawnienia, które chcesz zresetować. Aby wyświetlić pełną listę uprawnień aplikacji na Androida, otwórz stronę referencyjną interfejsu API uprawnień.
Więcej informacji o tym, jak obsługiwać odmowę przyznania uprawnień w aplikacji
Zmiany w oknie alertu systemowego
Android 11 wprowadza kilka zmian w sposobie przyznawania aplikacjom uprawnienia
SYSTEM_ALERT_WINDOW. Zmiany te mają na celu ochronę użytkowników poprzez zwiększenie świadomości przyznawania uprawnień.
Niektóre aplikacje automatycznie otrzymują uprawnienie SYSTEM_ALERT_WINDOW po wysłaniu prośby
Niektóre klasy aplikacji automatycznie otrzymują uprawnienie SYSTEM_ALERT_WINDOW
po wysłaniu prośby:
Każda aplikacja, która ma
ROLE_CALL_SCREENINGi prosi oSYSTEM_ALERT_WINDOW, automatycznie otrzymuje to uprawnienie. Jeśli aplikacja utraciROLE_CALL_SCREENING, utraci też to uprawnienie.Każda aplikacja, która rejestruje ekran za pomocą
MediaProjectioni prosi oSYSTEM_ALERT_WINDOW, automatycznie otrzymuje to uprawnienie , chyba że użytkownik wyraźnie odmówił przyznania tego uprawnienia aplikacji. Gdy aplikacja przestanie rejestrować ekran, utraci to uprawnienie. Ten przypadek użycia jest przeznaczony głównie dla aplikacji do transmisji na żywo gier.
Te aplikacje nie muszą wysyłać
ACTION_MANAGE_OVERLAY_PERMISSION
, aby uzyskać uprawnienie SYSTEM_ALERT_WINDOW. Mogą po prostu poprosić o
SYSTEM_ALERT_WINDOW bezpośrednio.
Intencje MANAGE_OVERLAY_PERMISSION zawsze przenoszą użytkownika na ekran uprawnień systemowych
Od Androida 11,
ACTION_MANAGE_OVERLAY_PERMISSION
intencje zawsze przenoszą użytkownika na ekran Ustawienia najwyższego poziomu, na którym
może on przyznawać i odbierać
SYSTEM_ALERT_WINDOW
uprawnienia aplikacjom. Wszystkie dane package: w intencji są ignorowane.
W starszych wersjach Androida intencja ACTION_MANAGE_OVERLAY_PERMISSION mogła określać pakiet, który przenosił użytkownika na ekran zarządzania uprawnieniami specyficzny dla aplikacji. Ta funkcja nie jest obsługiwana w
Androidzie 11. Zamiast tego użytkownik musi najpierw wybrać aplikację, której chce
przyznać lub odebrać uprawnienia. Ta zmiana ma na celu ochronę użytkowników
poprzez zwiększenie świadomości przyznawania uprawnień.
Numery telefonów
Android 11 zmienia uprawnienia związane z telefonem, których Twoja aplikacja używa podczas odczytywania numerów telefonów.
Jeśli Twoja aplikacja jest kierowana na Androida 11 lub nowszego i musi mieć dostęp do
interfejsów API numerów telefonów wymienionych na tej liście, musisz poprosić o
READ_PHONE_NUMBERS
uprawnienie zamiast uprawnienia READ_PHONE_STATE.
- Metoda
getLine1Number()w klasachTelephonyManageriTelecomManager. - Nieobsługiwana metoda
getMsisdn()w klasieTelephonyManager.
Jeśli Twoja aplikacja deklaruje READ_PHONE_STATE do wywoływania metod innych niż te z
poprzedniej listy, możesz nadal prosić o READ_PHONE_STATE we wszystkich
wersjach Androida. Jeśli jednak używasz uprawnienia READ_PHONE_STATE tylko w przypadku metod z poprzedniej listy, zaktualizuj plik manifestu w ten sposób:
- Zmień deklarację
READ_PHONE_STATE, aby aplikacja używała tego uprawnienia tylko w Androidzie 10 (API na poziomie 29) i starszych wersjach. - Dodaj uprawnienie
READ_PHONE_NUMBERS.
Ten proces ilustruje ten fragment deklaracji manifestu:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
Dodatkowe materiały
Więcej informacji o zmianach w uprawnieniach w Androidzie 11 znajdziesz w tych materiałach:
Filmy
Tworzenie aplikacji z uwzględnieniem najnowszych zmian w zakresie prywatności w Androidzie 11