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
lubACCESS_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 uprawnienieACCESS_COARSE_LOCATION
lubACCESS_FINE_LOCATION
.
Panel 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:
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
naSTART_VIEW_PERMISSION_USAGE
.Jeśli aplikacja jest kierowana na Androida 12 lub nowszego, musisz samodzielnie 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 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ń:
- Jeśli system wywołuje
ACTION_VIEW_PERMISSION_USAGE
, aplikacja może pobrać wartośćEXTRA_PERMISSION_GROUP_NAME
. - Jeśli system wywołuje funkcję
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, aplikacja może pobierać wartości dla tych parametrów:EXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
iEXTRA_END_TIME
.
- Jeśli system wywołuje
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.
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
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);