Uprawnienia związane z lokalizacją, mikrofonem i kamerą zapewniają aplikacji dostęp do szczególnie wrażliwych informacji o użytkownikach. Platforma zawiera kilka mechanizmów opisanych na tej stronie, które pomagają użytkownikom mieć kontrolę nad tym, które aplikacje mogą mieć dostęp do lokalizacji, mikrofonu i aparatu.
Te funkcje systemu zapewniające ochronę prywatności nie powinny wpływać na sposób, w jaki aplikacja obsługuje uprawnienia dotyczące lokalizacji, mikrofonu i aparatu, o ile tylko przestrzegasz zaleceń dotyczących ochrony prywatności.
W szczególności zadbaj o to, aby w aplikacji:
- Zaczekaj, aż użytkownik przyzna aplikacji uprawnienie
CAMERA
do korzystania z kamery urządzenia. - Poczekaj, aż użytkownik przyzna aplikacji uprawnienia
RECORD_AUDIO
do mikrofonu urządzenia. - Zanim poprosisz o uprawnienia
ACCESS_COARSE_LOCATION
lubACCESS_FINE_LOCATION
, zaczekaj, aż użytkownik skorzysta z funkcji w aplikacji, która wymaga dostępu do lokalizacji. Aby to zrobić, postępuj zgodnie z instrukcjami w przewodniku poprosić o uprawnienia dotyczące lokalizacji. - Zanim poprosisz o uprawnienie
ACCESS_BACKGROUND_LOCATION
, poczekaj, aż użytkownik przyzna Twojej aplikacji uprawnienieACCESS_COARSE_LOCATION
lubACCESS_FINE_LOCATION
.
Panel prywatności
Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemowych pojawi się ekran Pulpit prywatności. Na tym ekranie użytkownicy mogą uzyskać dostęp do osobnych ekranów, na których widać, kiedy aplikacje uzyskują dostęp do informacji o lokalizacji, aparatu i mikrofonu. Na każdym ekranie widać oś czasu z danymi konkretnego typu. Rysunek 1 przedstawia oś czasu dostępu do informacji o lokalizacji.
Pokaż uzasadnienie dostępu do danych
Aplikacja może wyjaśnić użytkownikom, dlaczego uzyskuje dostęp do informacji o lokalizacji, aparacie lub mikrofonie. Ten opis może się wyświetlać na nowym ekranie panelu prywatności lub na ekranie uprawnień aplikacji albo na obu tych ekranach.
Aby wyjaśnić, dlaczego Twoja aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie i mikrofonie, wykonaj te czynności:
Dodaj działanie, które po rozpoczęciu będzie uzasadniać, dlaczego aplikacja wykonuje określony typ działania związanego z dostępem do danych. W tej aktywności ustaw atrybut
android:permission
naSTART_VIEW_PERMISSION_USAGE
.Jeśli Twoja aplikacja jest kierowana na Androida 12 lub nowszego, musisz wyraźnie zdefiniować wartość atrybutu
android:exported
.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>
Określ, co ma się wyświetlać w przypadku aktywności związanej z uzasadnieniem dostępu do danych. Możesz na przykład wyświetlić stronę internetową aplikacji lub artykuł w Centrum pomocy. Aby uzyskać bardziej szczegółowe informacje o typach danych, do których aplikacja ma dostęp, oraz o czasie, w którym miał miejsce dostęp, obsłuż dodatkowe informacje, które system uwzględnia podczas wywoływania intencji użycia uprawnienia:
- Jeśli system wywoła
ACTION_VIEW_PERMISSION_USAGE
, aplikacja może pobrać wartośćEXTRA_PERMISSION_GROUP_NAME
. - Jeśli system wywołuje
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, aplikacja może pobrać wartościEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
iEXTRA_END_TIME
.
- Jeśli system wywoła
W zależności od tego, jakie filtry intencji dodasz, użytkownicy zobaczą ikonę informacji obok nazwy aplikacji na określonych ekranach:
- 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 wykonywania. - Jeśli dodasz filtr intencji zawierający działanie
VIEW_PERMISSION_USAGE_FOR_PERIOD
, użytkownicy zobaczą ikonę obok nazwy aplikacji za każdym razem, gdy aplikacja pojawi się na ekranie Panelu prywatności.
Gdy użytkownicy klikną tę ikonę, rozpocznie się uzasadnienie działania aplikacji.
Wskaźniki
Na urządzeniach z Androidem 12 lub nowszym, gdy aplikacja uzyskuje dostęp do mikrofonu lub aparatu, na pasku stanu pojawia się ikona. Jeśli aplikacja jest w trybie pełnoekranowym, ikona pojawi się w prawym górnym rogu ekranu. Użytkownicy mogą otworzyć Szybkie ustawienia i kliknąć ikonę, aby sprawdzić, które aplikacje obecnie korzystają z mikrofonu lub aparatu. Rysunek 2 przedstawia przykładowy zrzut ekranu z ikonami.
Określanie lokalizacji wskaźników na ekranie
Jeśli aplikacja obsługuje tryb pojemny lub interfejs pełnoekranowy, wskaźniki mogą tymczasowo nakładać się na interfejs aplikacji. Aby ułatwić dostosowanie interfejsu użytkownika do tych wskaźników, system wprowadza metodę getPrivacyIndicatorBounds()
, którą demonstruje poniższy fragment 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 inny układ interfejsu ekranu.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Przełączniki
Na obsługiwanych urządzeniach z Androidem w wersji 12 lub nowszej użytkownicy mogą włączać i wyłączać dostęp do aparatu i mikrofonu dla wszystkich aplikacji na urządzeniu, korzystając z jednego przełącznika. Użytkownicy mogą uzyskać dostęp do opcji przełączania w Szybkich ustawieniach (patrz rysunek 3) lub na ekranie Prywatność w ustawieniach systemu.
Przełączniki aparatu i mikrofonu mają wpływ na wszystkie aplikacje na urządzeniu:
- Gdy użytkownik wyłączy dostęp do kamery, aplikacja otrzyma pusty obraz z kamery.
Gdy użytkownik wyłączy dostęp do mikrofonu, aplikacja otrzyma dźwięk bez dźwięku. Ponadto czujniki ruchu mają ograniczoną częstotliwość, 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 potrzebuje dostępu do informacji z kamery lub mikrofonu, system przypomni mu, że przełącznik na poziomie urządzenia jest wyłączony.
Sprawdź, czy urządzenie jest obsługiwane
Aby sprawdzić, czy urządzenie obsługuje przełączniki mikrofonu i kamery, 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);