Wyjaśnij dostęp do bardziej poufnych informacji

Uprawnienia związane z lokalizacją, mikrofonem i aparatem dają aplikacji dostęp do szczególnie poufnych informacji o użytkownikach. Platforma zawiera kilka mechanizmów opisanych na tej stronie, które pomagają użytkownikom zachować kontrolę nad tym, które aplikacje mają dostęp do lokalizacji, mikrofonu i aparatu.

Te funkcje systemu chroniące prywatność nie powinny wpływać na sposób, w jaki 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 w aplikacji:

  • Zaczekaj z dostępem do aparatu urządzenia, aż użytkownik przyzna aplikacji uprawnienie CAMERA.
  • Zaczekaj z dostępem do mikrofonu urządzenia, aż użytkownik przyzna aplikacji uprawnienie RECORD_AUDIO.
  • Zanim poprosisz o uprawnienie ACCESS_COARSE_LOCATION lub ACCESS_FINE_LOCATION, poczekaj, aż użytkownik wejdzie w interakcję z funkcją w aplikacji, która wymaga lokalizacji. Więcej informacji znajdziesz w przewodniku na temat proszenia o dostęp do lokalizacji.
  • Zanim poprosisz o uprawnienie ACCESS_BACKGROUND_LOCATION, poczekaj, aż użytkownik przyzna aplikacji uprawnienie ACCESS_COARSE_LOCATION lub ACCESS_FINE_LOCATION.

Panel prywatności

Pionowa oś czasu pokazuje różne aplikacje, które uzyskały dostęp do informacji o lokalizacji, oraz czas, kiedy to nastąpiło.
Rysunek 1. Ekran wykorzystania lokalizacji, który jest częścią panelu prywatności.

Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemu pojawia się ekran Panelu prywatności. Na tym ekranie użytkownicy mogą uzyskać dostęp do osobnych ekranów, które pokazują, kiedy aplikacje korzystają z informacji o lokalizacji, aparacie i mikrofonie. Na każdym ekranie widać oś czasu, na której zaznaczono, kiedy różne aplikacje miały dostęp do określonego typu danych. Rysunek 1 przedstawia oś czasu dostępu do danych o lokalizacji.

Wyświetlanie uzasadnienia dostępu do danych

Aplikacja może podać użytkownikom uzasadnienie, aby pomóc im zrozumieć, dlaczego potrzebuje dostępu do informacji o lokalizacji, aparatu lub mikrofonu. To uzasadnienie może pojawić 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 mikrofonie, wykonaj te czynności:

  1. Dodaj aktywność, która po uruchomieniu wyjaśnia, dlaczego aplikacja wykonuje określony typ działania związanego z dostępem do danych. W ramach tej aktywności ustaw atrybut android:permission na START_VIEW_PERMISSION_USAGE.

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

  2. Dodaj do nowo dodanej aktywności 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 aktywności związanej z uzasadnieniem dostępu do danych. Możesz na przykład wyświetlić witrynę aplikacji lub artykuł w Centrum pomocy. Aby podać bardziej szczegółowe wyjaśnienie dotyczące typów danych, do których aplikacja ma dostęp, oraz czasu, kiedy ten dostęp nastąpił, obsłuż dodatkowe informacje, które system dołącza, gdy wywołuje intencję użycia uprawnień:

W zależności od tego, jakie filtry intencji dodasz, na niektórych ekranach obok nazwy aplikacji użytkownicy będą widzieć ikonę informacji:

  • 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ń w czasie działania aplikacji.
  • Jeśli dodasz filtr intencji zawierający działanie VIEW_PERMISSION_USAGE_FOR_PERIOD, użytkownicy będą widzieć ikonę obok nazwy aplikacji, gdy aplikacja pojawi się na ekranie panelu prywatności.

Gdy użytkownicy klikną tę ikonę, zostanie uruchomiona aktywność związana z uzasadnieniem.

Zaokrąglony prostokąt w prawym górnym rogu, który zawiera ikonę kamery i ikonę 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 wybrać ikonę, aby zobaczyć, które aplikacje używają obecnie mikrofonu lub aparatu. Rysunek 2 przedstawia przykładowy zrzut ekranu z ikonami.

Identyfikowanie lokalizacji wskaźników na ekranie

Jeśli aplikacja obsługuje tryb imersji lub interfejs pełnoekranowy, wskaźniki mogą chwilowo nakładać się na interfejs aplikacji. Aby ułatwić dostosowanie interfejsu do tych wskaźników, system wprowadza metodę getPrivacyIndicatorBounds(), którą pokazujemy w tym fragmencie kodu. Za pomocą tego interfejsu API możesz określić granice, w których mogą pojawiać się wskaźniki. Możesz wtedy zdecydować się na inną organizację interfejsu ekranu.

Kotlin

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

Przełączniki

Kafelki Szybkich ustawień są oznaczone jako „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 mogą uzyskać dostęp do opcji przełączania w Szybkich ustawieniach, jak pokazano na rysunku 3, lub na ekranie Prywatność w ustawieniach systemowych.

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

  • Gdy użytkownik wyłączy dostęp do aparatu, aplikacja otrzyma pusty przekaz z kamery.
  • Gdy użytkownik wyłączy dostęp do mikrofonu, aplikacja będzie otrzymywać wyciszony dźwięk. Dodatkowo czujniki ruchu mają ograniczoną liczbę żądań, niezależnie od tego, czy zadeklarujesz uprawnienie HIGH_SAMPLING_RATE_SENSORS.

Gdy użytkownik wyłączy dostęp do aparatu lub mikrofonu, a następnie uruchomi aplikację, która wymaga dostępu do informacji z aparatu lub mikrofonu, system przypomni mu, że przełącznik na urządzeniu jest wyłączony.

Sprawdzanie obsługi urządzenia

Aby sprawdzić, czy urządzenie obsługuje przełączniki mikrofonu i aparatu, dodaj logikę widoczną 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);