Wyjaśnij dostęp do bardziej poufnych informacji

Uprawnienia związane z lokalizacją, mikrofonem i aparatem umożliwiają aplikacji dostęp do szczególnie poufnych informacji o użytkownikach. Platforma udostępnia kilka opisanych na tej stronie mechanizmów, które pomagają użytkownikom być na bieżąco i kontrolować, które aplikacje mogą korzystać z lokalizacji, mikrofonu i aparatu.

Te funkcje systemowe chroniące prywatność nie powinny wpływać na to, jak aplikacja obsługuje uprawnienia związane z lokalizacją, mikrofonem i aparatem, o ile przestrzegasz sprawdzonych metod dotyczących prywatności.

W szczególności upewnij się, że wykonujesz w aplikacji te czynności:

  • Poczekaj na dostęp do aparatu urządzenia, aż użytkownik przyzna Twojej aplikacji uprawnienia do: CAMERA.
  • Poczekaj na dostęp do mikrofonu urządzenia, aż użytkownik przyzna Twojej aplikacji uprawnienia RECORD_AUDIO.
  • Zanim poprosisz o uprawnienie ACCESS_COARSE_LOCATION lub ACCESS_FINE_LOCATION, poczekaj, aż użytkownik wejdzie w interakcję z funkcją aplikacji, która wymaga dostępu do lokalizacji zgodnie z opisem w przewodniku po przesyłaniu prośby o dostęp do lokalizacji.
  • Zanim poprosisz o uprawnienia ACCESS_BACKGROUND_LOCATION, poczekaj, aż użytkownik przyzna Twojej aplikacji uprawnienie ACCESS_COARSE_LOCATION lub ACCESS_FINE_LOCATION.

Panel prywatności

Pionowa oś czasu przedstawia różne aplikacje, które uzyskały dostęp do informacji o lokalizacji, oraz czas uzyskania dostępu
Rysunek 1. Ekran korzystania z lokalizacji, który wchodzi w skład Panelu prywatności.

Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemowych pojawia się ekran Panelu prywatności. Na tym ekranie użytkownicy mają dostęp do osobnych ekranów, które wyświetlają się, gdy aplikacje korzystają z informacji o lokalizacji, aparacie i mikrofonach. Na każdym ekranie widać oś czasu, w której różne aplikacje uzyskiwały dostęp do określonego typu danych. Rysunek 1 przedstawia oś czasu dostępu do informacji o lokalizacji.

Pokaż uzasadnienie dostępu do danych

Aplikacja może podać uzasadnienie, które pomoże użytkownikom zrozumieć, dlaczego aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie lub mikrofonie. Uzasadnienie może pojawiać się na nowym ekranie Panelu prywatności, na ekranie uprawnień aplikacji lub na obu tych ekranach.

Aby wyjaśnić, dlaczego aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie i mikrofonu, wykonaj te czynności:

  1. Dodaj działanie, które po rozpoczęciu wskazuje powód, dla którego aplikacja wykonuje określony typ działania w zakresie dostępu do danych. W ramach tej aktywności ustaw atrybut android:permission na START_VIEW_PERMISSION_USAGE.

    Jeśli aplikacja jest kierowana na Androida 12 lub nowszego, musisz samodzielnie zdefiniować wartość atrybutu android:exported.

  2. Dodaj do nowo dodanego działania ten filtr intencji:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
    
  3. Określ, co ma być wyświetlane w przypadku uzasadnienia dostępu do danych. Może to być na przykład strona aplikacji lub artykuł w Centrum pomocy. Aby podać bardziej szczegółowe wyjaśnienie typów danych, do których aplikacja uzyskuje dostęp, oraz informacji o tym, kiedy miał miejsce dostęp, zapoznaj się z dodatkowymi elementami, które system zawiera podczas wywoływania intencji użycia uprawnień:

W zależności od dodanych filtrów intencji użytkownicy na niektórych ekranach widzą ikonę informacji obok nazwy aplikacji:

  • Jeśli dodasz filtr intencji zawierający działanie VIEW_PERMISSION_USAGE, użytkownicy zobaczą ikonę na stronie uprawnień aplikacji w ustawieniach systemowych. Możesz zastosować to działanie do wszystkich uprawnień czasu działania.
  • Jeśli dodasz filtr intencji zawierający działanie VIEW_PERMISSION_USAGE_FOR_PERIOD, użytkownicy będą widzieć ikonę obok nazwy Twojej aplikacji za każdym razem, gdy pojawi się ona na ekranie panelu prywatności.

Gdy użytkownik wybierze tę ikonę, rozpocznie się uzasadnienie działania aplikacji.

Okrągły prostokąt w prawym górnym rogu, w którym znajdują się ikony kamery i mikrofonu
Rysunek 2. Wskaźniki mikrofonu i aparatu, które pokazują ostatni dostęp do danych.

Wskaźniki

Na urządzeniach z Androidem 12 lub nowszym, gdy aplikacja korzysta z mikrofonu lub aparatu, na pasku stanu pojawia się ikona. Jeśli aplikacja jest w trybie pojemnym, ikona pojawi się w prawym górnym rogu ekranu. Użytkownicy mogą otworzyć Szybkie ustawienia i kliknąć ikonę, aby zobaczyć, które aplikacje aktualnie używają mikrofonu lub aparatu. Rysunek 2 przedstawia przykładowy zrzut ekranu zawierający ikony.

Określ lokalizację wskaźników na ekranie

Jeśli aplikacja obsługuje tryb pojemny lub interfejs pełnoekranowy, wskaźniki mogą tymczasowo nachodzić na interfejs aplikacji. Aby pomóc w dostosowaniu interfejsu użytkownika do tych wskaźników, system wprowadza metodę getPrivacyIndicatorBounds(), którą ilustruje ten fragment kodu. Za pomocą tego interfejsu API możesz określić granice, w których mogą pojawiać się wskaźniki. Być może zechcesz zmienić układ interfejsu ekranu.

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

Przełączniki

Kafelki szybkich ustawień mają etykiety „Dostęp do aparatu” i „Dostęp do mikrofonu”
Rysunek 3. Przełączniki mikrofonu i aparatu w Szybkich ustawieniach.

Na obsługiwanych urządzeniach z Androidem 12 lub nowszym użytkownicy mogą włączać i wyłączać dostęp do aparatu i mikrofonu dla wszystkich aplikacji na urządzeniu, naciskając jeden przełącznik. Użytkownicy mają dostęp do przełączanych opcji w Szybkich ustawieniach, jak pokazano na ilustracji 3, lub z ekranu prywatności w ustawieniach systemowych.

Przełączniki aparatu i mikrofonu wpływają na wszystkie aplikacje na urządzeniu:

  • Gdy użytkownik wyłączy dostęp do aparatu, aplikacja otrzyma pusty obraz z kamery.
  • Gdy użytkownik wyłączy dostęp do mikrofonu, aplikacja będzie słyszeć cichy dźwięk. Poza tym czujniki ruchu działają z ograniczeniem szybkości niezależnie od tego, czy zadeklarujesz uprawnienie HIGH_SAMPLING_RATE_SENSORS.

Gdy użytkownik wyłączy dostęp do kamery lub mikrofonu, a potem uruchomi aplikację, która wymaga dostępu do danych kamery lub mikrofonu, system przypomina mu, że przełącznik dla całego urządzenia jest wyłączony.

Sprawdź obsługę urządzenia

Aby sprawdzić, czy urządzenie obsługuje przełączniki mikrofonu i aparatu, dodaj mechanizm widoczny w tym fragmencie kodu:

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);