Android 11 umożliwia użytkownikom określanie bardziej szczegółowych uprawnień dotyczących lokalizacji, mikrofonu i aparatu. Dodatkowo system resetuje uprawnienia nieużywanych aplikacji kierowanych na Androida 11 lub nowszego. Aplikacje mogą wymagać aktualizacji zadeklarowanych uprawnień, jeśli używają okna alertu systemowego lub odczytują informacje związane z numerami telefonów.
Jednorazowe zezwolenia
Począwszy od Androida 11, gdy aplikacja prosi o uprawnienia związane z lokalizacją, mikrofonem lub aparatem, okno uprawnień wyświetlane użytkownikowi zawiera opcję Tylko tym razem. Jeśli użytkownik wybierze tę opcję w oknie, aplikacja otrzyma tymczasowe jednorazowe zezwolenie.
Dowiedz się więcej o tym, jak system obsługuje jednorazowe uprawnienia.
Automatyczne resetowanie uprawnień nieużywanych aplikacji
Jeśli 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 aplikacji, które użytkownik przyznał aplikacji. To działanie ma taki sam skutek, jak gdyby użytkownik wyświetlił uprawnienia w ustawieniach systemowych i zmienił poziom dostępu aplikacji na Odmów. Jeśli Twoja aplikacja jest zgodna ze sprawdzonymi metodami proszenia o uprawnienia w czasie działania, nie musisz wprowadzać w niej żadnych zmian. Gdy użytkownik korzysta z funkcji w aplikacji, musisz sprawdzić, czy mają one wymagane uprawnienia.
Dowiedz się więcej o tym, jak system automatycznie resetuje uprawnienia nieużywanych aplikacji.
Widoczność okna uprawnień
Począwszy od Androida 11, jeśli użytkownik kliknie Odmów w przypadku określonego uprawnienia więcej niż raz podczas okresu instalacji aplikacji na urządzeniu, nie zobaczy systemowego okna uprawnień, gdy aplikacja ponownie poprosi o to uprawnienie. Działanie użytkownika oznacza „nie pytaj ponownie”. W poprzednich wersjach użytkownicy widzieli okno uprawnień systemowych za każdym razem, gdy aplikacja prosiła o uprawnienia, chyba że wcześniej zaznaczyli pole wyboru lub opcję „Nie pytaj ponownie”. Ta zmiana w Androidzie 11 zniechęca do wielokrotnego proszenia o uprawnienia, których użytkownicy nie chcą przyznać.
Aby sprawdzić, czy aplikacji trwale odmówiono uprawnień (na potrzeby debugowania i testowania), użyj tego polecenia:
adb shell dumpsys package PACKAGE_NAME
Gdzie PACKAGE_NAME to nazwa pakietu, który chcesz sprawdzić.
Dane wyjściowe polecenia zawierają sekcje, które wyglądają tak:
... 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 zostały raz odrzucone przez użytkownika, są oznaczone ikoną USER_SET.
Uprawnienia, które zostały trwale odrzucone przez dwukrotne wybranie opcji Odrzuć, są oznaczone ikoną USER_FIXED.
Podczas testowania możesz zresetować te flagi, aby testerzy nie byli zaskoczeni, gdy okno prośby się nie wyświetli. Aby to zrobić, użyj polecenia:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME to nazwa uprawnienia, które chcesz zresetować. Pełną listę uprawnień aplikacji na Androida znajdziesz na stronie z dokumentacją interfejsu API uprawnień.
Dowiedz się więcej o obsłudze odmowy przyznania uprawnień w aplikacji.
Zmiany w oknie alertu systemowego
Android 11 wprowadza kilka zmian w sposobie przyznawania aplikacjom uprawnienia SYSTEM_ALERT_WINDOW. Zmiany mają na celu ochronę użytkowników przez zwiększenie świadomości przyznawania uprawnień.
Niektóre aplikacje automatycznie otrzymują uprawnienie SYSTEM_ALERT_WINDOW na żądanie
Niektóre klasy aplikacji automatycznie otrzymują uprawnienie SYSTEM_ALERT_WINDOW na żądanie:
Każda aplikacja, która ma uprawnienie
ROLE_CALL_SCREENINGi prosi o uprawnienieSYSTEM_ALERT_WINDOW, automatycznie je otrzymuje. Jeśli aplikacja utraciROLE_CALL_SCREENING, utraci też uprawnienia.Każda aplikacja, która przechwytuje ekran za pomocą
MediaProjectioni żąda uprawnieńSYSTEM_ALERT_WINDOW, automatycznie otrzymuje uprawnienia, chyba że użytkownik wyraźnie odmówił ich przyznania. Gdy aplikacja przestanie przechwytywać ekran, utraci uprawnienia. Ten przypadek użycia dotyczy głównie aplikacji do transmisji na żywo z 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
Począwszy od Androida 11 intencje ACTION_MANAGE_OVERLAY_PERMISSION zawsze przenoszą użytkownika na najwyższy poziom ekranu Ustawienia, gdzie może on przyznać lub odebrać uprawnienia SYSTEM_ALERT_WINDOW aplikacjom. Wszystkie dane package: w intencji są ignorowane.
We wcześniejszych wersjach Androida intencja ACTION_MANAGE_OVERLAY_PERMISSION mogła określać pakiet, co powodowało przekierowanie użytkownika do ekranu aplikacji, na którym mógł zarządzać uprawnieniami. Ta funkcja nie jest obsługiwana od Androida 11. Użytkownik musi najpierw wybrać aplikację, której chce przyznać lub odebrać uprawnienia. Ta zmiana ma na celu ochronę użytkowników
przez zwiększenie świadomości przyznawania uprawnień.
Numery telefonów
Android 11 zmienia uprawnienia związane z telefonem, których aplikacja używa podczas odczytywania numerów telefonów.
Jeśli Twoja aplikacja jest kierowana na Androida 11 lub nowszego i potrzebuje dostępu do interfejsów API numerów telefonów wymienionych na liście poniżej, musisz poprosić o uprawnienie READ_PHONE_NUMBERS, a nie READ_PHONE_STATE.
- Metoda
getLine1Number()w klasieTelephonyManageri klasieTelecomManager. - Nieobsługiwana metoda
getMsisdn()w klasieTelephonyManager.
Jeśli Twoja aplikacja deklaruje uprawnienie READ_PHONE_STATE do wywoływania metod innych niż te na poprzedniej liście, możesz nadal prosić o uprawnienie 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ę uprawnienia
READ_PHONE_STATE, aby aplikacja używała go tylko na Androidzie 10 (poziom API 29) i starszych wersjach. - Dodaj uprawnienie
READ_PHONE_NUMBERS.
Ten proces ilustruje ten fragment deklaracji w pliku 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 uprawnień w Androidzie 11 znajdziesz w tych materiałach:
Filmy
Developing with the latest privacy changes in Android 11