Uprawnienia związane z lokalizacją, mikrofonem i aparatem zapewniają aplikacji dostęp do szczególnie poufnych informacji o użytkownikach. Platforma ta wykorzystuje kilka opisanych na tej stronie mechanizmów, które pomagają użytkownikom być na bieżąco i kontrolować dostęp do lokalizacji, mikrofonu i aparatu.
Te chroniące prywatność funkcje systemowe nie powinny mieć wpływu na sposób obsługi przez aplikację uprawnień związanych z lokalizacją, mikrofonem i aparatem, o ile przestrzegasz sprawdzonych metod ochrony prywatności.
W szczególności upewnij się, że w aplikacji:
- Zaczekaj, aż użytkownik przyzna Twojej aplikacji uprawnienia
CAMERA
. - Poczekaj, zanim użytkownik przyzna uprawnienia
RECORD_AUDIO
aplikacji, zanim uzyskasz dostęp do mikrofonu urządzenia. - Zanim poprosisz o pozwolenie
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 wysyłania próśb o uprawnienia do 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 Panel prywatności. Na tym ekranie użytkownicy mają dostęp do osobnych ekranów, które pokazują, kiedy aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie i mikrofonie. 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. Uzasadnienie może się pojawić 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:
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 ramach tej aktywności ustaw atrybut
android:permission
naSTART_VIEW_PERMISSION_USAGE
.Jeśli aplikacja jest kierowana na Androida 12 lub nowszego, musisz wyraźnie zdefiniować wartość atrybutu
android:exported
.Do nowo dodanego działania dodaj 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, jakie informacje o uzasadnieniu dostępu do danych mają wyświetlać. Możesz na przykład wyświetlić witrynę swojej aplikacji lub artykuł w Centrum pomocy. Aby podać bardziej szczegółowe informacje o typach danych, do których aplikacja ma dostęp, oraz o czasie uzyskania dostępu, obsługuj dodatki uwzględniane przez system podczas wywoływania intencji użycia uprawnień:
- Jeśli system wywoła
ACTION_VIEW_PERMISSION_USAGE
, aplikacja może pobrać wartośćEXTRA_PERMISSION_GROUP_NAME
. - Jeśli system wywoła
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 będą widzieć na określonych ekranach obok nazwy aplikacji 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ń czasu działania. - Jeśli dodasz filtr intencji, który zawiera działanie
VIEW_PERMISSION_USAGE_FOR_PERIOD
, użytkownicy będą widzieć ikonę obok nazwy aplikacji za każdym razem, gdy aplikacja pojawi się na ekranie panelu prywatności.
Gdy użytkownik kliknie tę ikonę, rozpocznie się uzasadnienie Twojej 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 używają obecnie mikrofonu lub aparatu. Ilustracja 2 przedstawia przykładowy zrzut ekranu z ikonami.
Określanie lokalizacji na ekranie wskaźników
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ą przedstawia ten fragment kodu. Za pomocą tego interfejsu API możesz
określić granice, w których mogą się pojawić wskaźniki. Następnie możesz inaczej uporządkować interfejs ekranu.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Przełącza
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 opcji, które można przełączać, w Szybkich ustawieniach (jak pokazano na ilustracji 3) lub na ekranie prywatności 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 kamery, aplikacja otrzyma pusty obraz z kamery.
Gdy użytkownik wyłączy dostęp do mikrofonu, aplikacja otrzyma cichy dźwięk. Dodatkowo czujniki ruchu podlegają ograniczeniom niezależnie od tego, czy zadeklarujesz uprawnienia
HIGH_SAMPLING_RATE_SENSORS
.
Gdy użytkownik wyłączy dostęp do aparatu lub mikrofonu, a potem uruchomi aplikację, która wymaga dostępu do informacji o kamerze lub mikrofonie, system przypomni mu, że przełącznik dla wszystkich urządzeń jest wyłączony.
Sprawdź, czy urządzenie jest obsługiwane
Aby sprawdzić, czy urządzenie obsługuje przełączniki mikrofonu i aparatu, dodaj mechanizm logiczny 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);