Aktualizacje uprawnień w Androidzie 11

Android 11 umożliwia użytkownikom ze względu na dostęp do lokalizacji, mikrofonu i aparatu. Dodatkowo system resetuje uprawnienia nieużywanych aplikacji kierowanych na Androida 11 lub a aplikacje mogą wymagać aktualizacji zadeklarowanych uprawnień. skorzystać z okna alertu systemowego lub odczytać informacje związane z numerami telefonów.

Jednorazowe zezwolenia

Od Androida 11 za każdym razem, gdy aplikacja prosi o uprawnienia związane z lokalizacją, mikrofonem lub aparatem, widoczne dla użytkownika okno uprawnień zawiera opcję Tylko tym razem. Jeśli użytkownik wybierze tę opcję w aplikacja otrzyma tymczasowe jednorazowe uprawnienia.

Dowiedz się więcej o tym, jak system obsługuje jednorazowe .

Automatycznie resetuj uprawnienia nieużywanych aplikacji

Jeśli aplikacja jest kierowana na Androida 11 lub nowszego i nie jest używana przez kilka system chroni dane użytkowników, automatycznie resetując poufne dane, uprawnienia w czasie działania przyznane aplikacji przez użytkownika. To działanie ma taki sam efekt działania, tak jakby użytkownik wyświetlił uprawnienia w ustawieniach systemu i zmienił poziom dostępu aplikacji do opcji Odmów. Jeśli aplikacja jest zgodna ze sprawdzonymi metodami dotyczącymi: żądanie uprawnień w czasie działania, nie musisz wprowadzać żadnych zmian w aplikacji. To dlatego, że jako użytkownik współdziała z funkcjami aplikacji, należy sprawdzić, czy zostały potrzebne mu uprawnienia.

Dowiedz się więcej o tym, jak system automatycznie resetuje nieużywane uprawnienia

Widoczność okna uprawnień

Począwszy od Androida 11, jeśli użytkownik kliknie Odmów, uprawnienia więcej niż raz w trakcie instalacji aplikacji urządzenia, użytkownik nie zobaczy okna uprawnień systemowych, jeśli aplikacja ponownie prosi o uprawnienie. Działanie użytkownika oznacza „nie pytaj ponownie”. Wł. w poprzednich wersjach, użytkownicy widzieli okno uprawnień systemowych za każdym razem, aplikacja prosi o uprawnienia, chyba że użytkownik wcześniej wybrał opcję „Nie pytaj” ponownie”. pola wyboru lub opcji. Ta zmiana działania w Androidzie 11 zniechęca: wielokrotnych próśb o uprawnienia, które użytkownicy chcą odrzucić.

Sprawdzanie, czy aplikacja otrzymała trwałą odmowę uprawnień (na potrzeby debugowania i testowania), użyj tego polecenia:

adb shell dumpsys package PACKAGE_NAME

Gdzie PACKAGE_NAME to nazwa pakietu do sprawdzenia.

Wynik polecenia zawiera 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 odmówił raz, mają oznaczenie USER_SET. Uprawnienia, które zostały trwale odrzucone, klikając dwukrotnie Odmów, są nadal zgłoszone przez: USER_FIXED.

Podczas testów warto zresetować te flagi, by mieć pewność, że testerzy zdziwienie, gdy okno dialogowe żądania się nie wyświetla. 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 przyznać . Aby zobaczyć pełną listę uprawnień aplikacji na Androida, odwiedź interfejs API uprawnień stronie referencyjnej.

Dowiedz się więcej o tym, jak zarządzać uprawnieniami w aplikacji.

Zmiany w oknach alertów systemowych

Android 11 wprowadza kilka zmian w sposobie przyznawania aplikacjom SYSTEM_ALERT_WINDOW uprawnienia. Te zmiany mają chronić użytkowników przez przyznawanie uprawnień bardziej świadomie.

Niektóre aplikacje automatycznie otrzymują na żądanie uprawnienie SYSTEM_ALERT_WINDOW

Niektóre klasy aplikacji automatycznie otrzymują uprawnienie SYSTEM_ALERT_WINDOW uprawnienia na żądanie:

  • Każda aplikacja, która zawiera ROLE_CALL_SCREENING a prośba SYSTEM_ALERT_WINDOW o to uprawnienie automatycznie otrzyma to uprawnienie. Jeśli aplikacja utraci ROLE_CALL_SCREENING, utraci uprawnienia.

  • Każda aplikacja, która przechwytuje ekran za pomocą MediaProjection i prosi o pozwolenie na dostęp SYSTEM_ALERT_WINDOW automatycznie chyba że użytkownik wyraźnie odmówił przyznania aplikacji uprawnień. Gdy aplikacja przestanie przechwytywać ekran, utraci uprawnienia. Ten przypadek użycia jest głównie przeznaczonych do transmisji na żywo z gier.

Te aplikacje nie muszą wysyłać ACTION_MANAGE_OVERLAY_PERMISSION aby uzyskać uprawnienie SYSTEM_ALERT_WINDOW; o które aplikacje mogą prosić bezpośrednio SYSTEM_ALERT_WINDOW.

Intencje MANAGE_OVERLAY_PERMISSION zawsze powodują wyświetlenie ekranu uprawnień systemowych

Począwszy od Androida 11, ACTION_MANAGE_OVERLAY_PERMISSION intencje zawsze kierują użytkownika na ekran Ustawienia najwyższego poziomu, gdzie użytkownik może przyznać lub anulować SYSTEM_ALERT_WINDOW. uprawnienia aplikacji. Wszystkie dane package: w intencji są ignorowane.

We wcześniejszych wersjach Androida intencja ACTION_MANAGE_OVERLAY_PERMISSION może określić pakiet, który przekieruje użytkownika na ekran danej aplikacji do zarządzania uprawnieniami. Ta funkcja nie jest obsługiwana w Android 11. Użytkownik musi najpierw wybrać aplikację, w celu przyznania lub cofnięcia tych uprawnień. Ta zmiana ma na celu ochronę użytkowników przez nadanie uprawnień bardziej celowo.

Numery telefonów

Android 11 zmienia uprawnienia związane z telefonem, które Twoja aplikacja który jest używany przy odczytywaniu numerów telefonów.

Jeśli Twoja aplikacja jest kierowana na Androida 11 lub nowszego i potrzebujesz dostępu do interfejsów API numerów telefonów z poniższej listy, musisz zażądać READ_PHONE_NUMBERS zamiast uprawnienia READ_PHONE_STATE.

Jeśli Twoja aplikacja deklaruje READ_PHONE_STATE do metod wywoływania innych niż te w z poprzedniej listy, możesz nadal wysyłać prośby o READ_PHONE_STATE we wszystkich Wersje Androida. Jeśli używasz uprawnienia READ_PHONE_STATE tylko w przypadku aplikacji z poprzedniej listy, jednak zaktualizuj plik manifestu w ten sposób:

  1. Zmień deklarację dotyczącą READ_PHONE_STATE, tak aby aplikacja używała atrybutu tylko na Androidzie 10 (poziom interfejsu API 29) i starszych.
  2. Dodaj uprawnienie READ_PHONE_NUMBERS.

Ten fragment kodu deklaracji w pliku manifestu ilustruje ten proces:

<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 następujące materiały:

Filmy

z uwzględnieniem najnowszych zmian w ochronie prywatności Android 11